【发布时间】:2013-10-18 18:54:08
【问题描述】:
我有一个定义 onDragEvent 的控制器:
controller = Em.Object.create( {
onDragEvent: function() {
console.log("Drag Event");
}
});
我有一个 Mixin:
Event = Ember.Mixin.create( {
attributeBindings: 'draggable',
draggable: 'true',
drag: function (event) {
Em.run.throttle(this, controller.onDragEvent, 1000);
}
});
我的理解是,在拖动过程中,controller.onDragEvent 应该每 1000 毫秒调用一次。
控制台正在注销:
Uncaught TypeError: Object function (a,b){var d,e;f.begin();try{if(a||b)d=c(a,b,arguments,2)}finally{f.end()}return d} has no method 'throttle' Events.js:42
Events.Ember.Mixin.create.drag Events.js:42
Ember.View.Ember.Object.extend.trigger ember-1.0.pre.min.js:16
d ember-1.0.pre.min.js:14
Ember.View.states.hasElement.handleEvent ember-1.0.pre.min.js:16
Ember.View.Ember.Object.extend.invokeForState ember-1.0.pre.min.js:16
Ember.View.Ember.Object.extend.handleEvent ember-1.0.pre.min.js:16
(anonymous function) ember-1.0.pre.min.js:16
c ember-1.0.pre.min.js:14
Ember.run ember-1.0.pre.min.js:14
Ember.EventDispatcher.Ember.Object.extend._bubbleEvent ember-1.0.pre.min.js:16
(anonymous function) ember-1.0.pre.min.js:16
f.event.dispatch jquery-1.7.2.min.js:3
h.handle.i
我很确定我不明白如何使用油门功能。我还注意到我使用的是Em.Object.create 与Ember.Mixin.create,但是在没有油门的情况下调用controller.onDragEvent 可以正常工作。我做错了什么?
编辑 1:
如果我使用:
Event = Ember.Mixin.create( {
attributeBindings: 'draggable',
draggable: 'true',
drag: function (event) {
Em.run.throttle(controller, onDragEvent, 1000);
}
});
我得到一个不同的错误:
Uncaught ReferenceError: onDragEvent is not defined
供参考;只需调用 controller.onDragEvent(); 即可。
【问题讨论】:
-
是的,onDragEvent 没有指向任何东西,controller.onDragEvent 是正确的。
标签: javascript html ember.js