gpt4 book ai didi

javascript - (Ember.run.throttle) 对象函数在 Ember.Mixin 中没有方法 'throttle'

转载 作者:行者123 更新时间:2023-11-28 01:53:14 33 4
gpt4 key购买 nike

我有一个定义 onDragEvent 的 Controller :

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

我很确定我不明白如何使用 throttle 功能。我还注意到我使用的是 Em.Object.createEmber.Mixin.create,但在没有 throttle 的情况下调用 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(); 就可以正常工作。

最佳答案

我刚刚意识到我从未见过堆栈的右侧。您使用的是较旧版本的 ember, throttle 和反跳功能直到 1.0 beta 后期才引入(确切地说是 1.0 RC7,远远晚于 1.0 pre)

切换到此版本:

//cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0/ember.js

它似乎对我有用:

http://emberjs.jsbin.com/oZIMiMA/1/edit

突出显示输出中的 a 或 b。

你能设置一个 jsbin 显示它不工作吗?

可拖动示例:

http://jsfiddle.net/tjZac/1/

DragNDrop.Draggable = Ember.Mixin.create({
attributeBindings: 'draggable',
draggable: 'true',
drag: function(event) {
console.log('real call')
Ember.run.throttle(this, DragNDrop.controller.onDragEvent, 300);
}
});

关于javascript - (Ember.run.throttle) 对象函数在 Ember.Mixin 中没有方法 'throttle',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457076/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com