如何从回调访问成员变量
how to access member variables from a callback?
我有一个简单的Backbone视图,它使用jQuery UI的按钮。
例如,我有一个删除按钮,它应该删除模型(和视图)。我设法使用以下方法将按钮添加到渲染方法中的视图中:
var self = this;
$(this.el).find("#deleteButton").button({text : false});
$(this.el).find("#deleteButton").bind( "click", self.deleteView);
然后我在视图中有相应的方法:
deleteView: function(){
console.log(this.model);
}
调用"deleteView"方法,但它会将"未定义"打印到控制台,因为"this"指的是按钮而不是视图。用"自我"代替"这个"也行不通。此外,将模型或视图作为参数传递给方法似乎不起作用,因为参数将是单击事件。
使用骨干处理此类回调的正确方法是什么?
您可能希望改用 backbone.view
事件属性。这是建议的方法,而不是在渲染期间手动使用 jQuery 将事件绑定到子元素。 http://documentcloud.github.com/backbone/#View-delegateEvents
就像将其添加到您的视图中一样简单:
events: {
"click #deleteButton": "deleteView",
},
函数的上下文在绑定为 jQuery 事件时会发生变化。
使用另一个函数,其中使用 self
或 jQuery.proxy
。
通过$.proxy
维护上下文的示例:http://jsfiddle.net/bAeQZ/
var self = {
deleteView: function(){console.log(this.model)},
model: '...some model...'
};
$(document).click($.proxy(self.deleteView, self));
// Alternative without $.proxy:
$(document).click(function(){self.deleteView();});
相关文章:
- 如何在 JavaScript 中“获取”成员变量
- 从JavaScript对象访问数据's数组成员变量
- Javascript通过引用访问成员变量
- ES6 类中成员变量的声明
- 在 Nodejs 中设置 Prototype 类的成员变量
- 如何从回调访问成员变量
- 闭包中的局部变量如何成为 Ext JS 中的私有成员变量
- 来自对象的内部 AJAX 调用正在清除成员变量
- 使用经典继承,在 JavaScript 中使用“类级”/成员变量是一个好主意还是坏主意
- 访问Java对象's具有字符串名称的成员变量
- Javascript对象成员变量未克隆
- 从自调用嵌套函数中引用成员变量
- 如何访问javascript中的asp.net代码隐藏会话对象成员变量
- 在JavaScript中声明私有静态成员变量
- Javascript和jQuery:从事件回调中访问类成员变量
- AngularJS中的带有成员变量的子类工厂
- Javascript:如何在创建立即调用的对象时访问公共成员变量
- 未初始化的成员变量跨平台不一致
- 从返回的承诺中设置成员变量
- 如何在碰撞检测函数中获取成员变量