所以当用户点击按钮时,我在视图中调用一个函数。此功能需要回调功能。我在同一视图中定义了回调。当调用回调时,我想用刚刚获得的附加信息渲染当前视图。但是,似乎你在回调函数中丢失了范围,因此在调用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;
}
});
答案 0 :(得分:1)
您需要将回调绑定到正确的'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);
});