因此,当用户单击按钮时,我正在视图中调用函数。该函数需要一个回调函数。我在同一视图中定义了回调。当回调被调用时,我想使用刚刚获得的其他信息来渲染当前视图。但是,似乎您在回调函数中失去了作用域,因此在调用this.render()时出现错误。说“全局对象没有方法渲染”。因此,“ this”现在是指窗口对象。如何在我的视野范围内保留范围?因此,这里有一个我正在谈论的例子。
var profileView = Parse.View.extend({
events: {
"click #scan_item": "scanItem"
},
scanItem: function(){
ScanItem(callback);
},
callback: function(info){
this.render(info);
},
render: function(info){
$(this.el).html(this.template({info: info}));
return this;
}
});
您需要将回调绑定到正确的“ this”
可能的工作:
ScanItem(this.callback.bind(this))
(我不知道此框架是否具有绑定功能)
否则,老派:)将其保留在封闭范围内的变量中
var that=this;
ScanItem(function(info){
that.callback(info)
});
为什么传递给scanItem的函数需要被定义为好像是“方法”一样?并且它是否必须知道要传递的参数-为什么不将所有参数都传递呢?
var that=this;
ScanItem(function(){
that.render.apply(that,arguments);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句