0

我在我的 ember.js 应用程序中使用自定义 jQuery UI 插件,并希望对自定义 jQuery 事件做出反应以更新控制器/模型的值。

我发现了什么:在 stackoverflow 上出于相同目的提出的一个问题给出了在视图的didInsertElement函数中使用 jQuery.bind()/[jQuery.on() 的答案。在视图的didInsertElement方法中使用jQuery.on()会导致事件处理程序内部的this绑定到它发生的 Dom-Element 的问题。

所以理想情况下,有一种方法可以让其他 jQuery 事件像 ember 带来的那样工作:在 Ember.View-Instance 上调用匹配的方法名称。

你知道任何让自定义 jQuery 事件工作的方法吗?可能使用 Mixin 在视图等上创建适当的方法?

4

1 回答 1

1

听起来这是一个 Javascript 问题,而不是 jQuery 或 Ember 问题。理解和操作“this”的含义是 Javascript 中最大的学习曲线之一:

///...in the view
didInsertElement : function(){
    var view = this;
    this.$().zoomablebg(); //this is the name of the custom jQ UI-Plugin
    // the view variable now holds a reference to the ember view
    // and creates a closure so that you can refer to it in the event handler
    this.$().on("zoomablebgstopdrag", function(e){ view.zoomablebgstopdrag(e) });
},
zoomablebgstopdrag: function(b){
    console.log(this); //this refers to the view now. 
},
//more view code

希望有帮助!

于 2013-04-19T12:36:58.237 回答