小胡子lambda函数是否可以访问其视图实例this
?
Backbone.View.extend ({
initialize: function (options) {
this.collection = options.collection // large backbone.collection
},
parseContent: function (){
return function (id, render){
//this.collection is undefined below
return this.collection.get (render (id)).get ('stuff);
}
}
});
在_.bind (this.parseContent, this)
内尝试initialize ()
,this
仍然在parseContent ()
内传递模型上下文。
我目前的解决方法是将this.collection
保存到我的应用根命名空间并从那里进行访问。想知道有没有一种更清洁的方法来实现上述目的?
感谢您的建议。
答案 0 :(得分:1)
如果你要传递parseContent
返回的函数,你应该
_.bind
,initialize
中的_.bindAll
在每个实例的this
中强制parseContent
。您的观点可以写成
Backbone.View.extend ({
initialize: function (options) {
_.bindAll(this, 'parseContent');
// you don't need this.collection = options.collection
// collection is part of the special variables handled By Backbone
},
parseContent: function (){
var f = function (id, render){
console.log(this.collection);
}
return _.bind(f, this);
}
});