我遇到了一个Backbone.js模型的奇怪问题,其中一个数组成员显示为空白.它看起来像这样:
var Session = Backbone.Model.extend({
defaults: {
// ...
widgets: []
},
addWidget: function (widget) {
var widgets = this.get("widgets");
widgets.push(widget);
this.trigger("change:widgets", this, widgets);
},
// ...
// I have a method on the model to grabbing a member of the array
getWidget: function (id) {
console.log(this.attributes);
console.log(this.attributes.widgets);
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
然后我通过添加一个小部件addWidget.尝试getWidget我得到的结果(在Chrome中)是这样的:
Object
widgets: Array[1]
0: child
length: 1
__proto__: Array[0]
__proto__: Object
[]
Run Code Online (Sandbox Code Playgroud)
它显示记录时窗口小部件不为空,this.attributes但在记录时显示为空this.attributes.widgets.有谁知道会导致什么?
编辑 我已经更改了模型以在初始化方法中实例化窗口小部件数组,以避免跨多个实例的引用,并且我开始使用骨架嵌套而没有运气.
我正在尝试使用Intern测试Require.js项目.我在我的测试中遇到错误,在加载jQuery插件时没有定义jQuery.我的loader配置如下所示:
loader: {
// Aliased paths
paths: {
'dt': 'dt',
'jq': 'jquery',
'jquery': 'jquery/jquery-1.8.3',
'jquerymx': 'jquery/jquerymx-3.2.custom',
'jquery.ui': 'jquery/jquery-ui-1.9.2.custom.min',
'jquery.ui.widget': 'jquery/jquery.ui.widget',
'jquery.jscrollpane': 'jquery/jquery.jscrollpane.min.edit',
'jquery.colorbox': 'jquery/jquery.colorbox-min',
'jquery.selectbox': 'jquery/jquery.selectbox-0.2.min.edit',
'jquery.base64': 'jquery/jquery.base64',
'jquery.cookie': 'jquery/jquery.cookie',
'jquery.urldecoder': 'jquery/jquery.urldecoder.min',
'jquery.fileupload': 'jquery/jquery.fileupload',
'jquery.history': 'history/scripts/compressed/history.adapter.jquery',
'openajax': 'openajax_2.0.7/OpenAjaxUnmanagedHub',
'zeroclipboard': 'zeroclipboard/ZeroClipboard'
},
// Plugin mappings
map: {
'*': {
'css': 'requirejs/require-css/css',
'text': 'requirejs/text'
}
},
// Shims for non-AMD libraries, mainly jQuery plugins
shim: {
'openajax': {
exports: 'OpenAjax'
},
'zeroclipboard': {
exports: 'ZeroClipboard'
},
'jquerymx': ['jquery'],
'jquery.ui': ['jquery'],
'jquery.ui.widget': ['jquery'], …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用指针事件来检测包括笔压力在内的数位板输入,但 Chrome 和 Firefox 似乎无法正确读取数位板设备 (Wacom Intuos 4)。所有指针事件都返回与我的鼠标相同的指针 ID 和指针类型,默认压力读数为 0.5。我正在使用的代码如下所示:
container.addEventListener("pointerdown", (event) => {
console.log(event.pointerId);
console.log(event.pointerType);
console.log(event.pressure);
}, true);
Run Code Online (Sandbox Code Playgroud)
这将输出“1”、“鼠标”和“0.5”。这发生在“pointerdown”、“pointermove”和“pointerup”事件中。
我已经在安装了适当驱动程序的 Windows 和 Linux 上尝试过这个,其他应用程序会检测笔压力(例如 Krita)。
Chrome 和 Firefox 是否还不能正确支持图形平板电脑,或者我只是做错了什么?
我有一些在IE 10中无法正常工作的拖放上传代码.我的事件处理程序看起来像这样:
dragCatcher.on('drop', function (e) {
e.preventDefault();
e.stopPropagation();
console.log(e.originalEvent.dataTransfer.files);
}).on('dragenter', function (e) {
e.preventDefault();
e.stopPropagation();
}).on('dragleave', function (e) {
e.preventDefault();
e.stopPropagation();
}).on('dragover', function (e) {
e.preventDefault();
e.stopPropagation();
console.log(e.originalEvent.dataTransfer.types);
});
Run Code Online (Sandbox Code Playgroud)
两人都console.log拿出来了undefined.我可以确认它不是一个控制台错误,因为e.originalEvent.dataTransfer.files[0]出现错误.我确定我错过了一些明显的东西,但我似乎无法弄明白.