从子方法访问父对象
Accessing parent object from child method
我有一个骨干视图,如下所示:
var myView = Backbone.View.extend({
bar: 1,
open: function() {
$(window).on('resize', this.resizeHandler);
},
close: function() {
$(window).off('resize', this.resizeHandler);
},
resizeHandler: function(e) {
alert(this.bar);
}
});
this.bar resizeHandler 方法中失败,因为"this"不再是对父对象的引用,而是对与事件相关的 event/html 元素的引用。
我怎样才能让它工作,以便 resizeHandler 具有对父对象的引用,并且我仍然具有对可以在 Jquery on 和 off 方法中使用的函数的引用?
谢谢。
如常见问题解答中所述,条目绑定"this"
也许最常见的JavaScript"陷阱"是 将函数作为回调传递时,其
this
值将丢失。
使用Backbone,在处理事件和回调时,您经常会 发现依赖 Underscore.js 中的 _.bind 和 _.bindAll 很有用。
解决问题的最简单方法可能是使用 _.bindAll
var myView = Backbone.View.extend({
bar: 1,
initialize: function() {
_.bindAll(this, 'resizeHandler');
},
open: function() {
$(window).on('resize', this.resizeHandler);
},
close: function() {
$(window).off('resize', this.resizeHandler);
},
resizeHandler: function(e) {
console.log(this.bar);
}
});
还有一个演示 http://jsfiddle.net/nikoshr/DZqDw/(我建议避免alert
调试代码,尤其是当您跟踪鼠标移动/调整大小事件时)
你试过bind
(http://backbonejs.org/#FAQ-this) 吗?
例如:
$(window).on('resize', _.bind( this.resizeHandler, this ) );
相关文章:
- 如何使用此从对象访问构造函数
- LokiJS与标准Javascript对象访问
- JavaScript子对象访问自己的值
- Javascript嵌套对象访问根级别
- 即使使用 angular.fromJson() 也无法从 json 对象访问字符串
- 从表单到 Ajax 的动态对象访问
- 将 NodeJS 模块范围变量作为对象访问
- 能够从Meteor中的辅助对象访问特定值
- 从JavaScript对象访问数据's数组成员变量
- 如何从 React 中的事件对象访问自定义属性
- 函数中的对象访问;不起作用
- 如何在javascript中从JSON对象访问数组
- 如何从C#.Net Webbrowser对象访问javascript变量
- Javascript中最快的类/对象访问/实例化是什么
- 覆盖对象访问 JavaScript
- 如何从 jquery 中的另一个对象访问在一个对象中声明的变量
- 从 JavaScript 对象访问变量
- 如何从范围对象访问数据到指令
- 从vue.js中的对象访问v-repeat-overarray中的属性
- jQuery:从具有一个类的多个实例的对象访问元素