我有以下代码:
initialize: function() {
_.bindAll(this);
var callBack = function(res) {
window.item = new Item(res);
this.render();
};
_.bind(callBack, this);
$.get('/item/parse', {
uri: decodeURIComponent($.urlParam('uri')),
title: decodeURIComponent($.urlParam('title'))
},
callBack
);
},
目的是在$ .get函数完成后调用render()。但是,即使将回调函数与_.bind绑定后,我仍然在控制台中得到“对象没有函数渲染”。我在这里使用绑定不正确吗?
答案 0 :(得分:6)
_.bind
返回一个新函数,所以:
callBack = _.bind(callBack, this);
您也可以使用_.bindAll
,但在定义函数后必须将其命名为。否则,在您拨打_.bindAll
时没有任何功能。请注意,在这种情况下您必须使用this.callBack = ...
,否则this
将不包含任何函数。
同时使用_.bind
和_.bindAll
是多余的。
答案 1 :(得分:2)
我通常在我的模型上写一个'load'方法,我把它作为参数回调。然后我从视图中的render()方法调用此方法,并在回调函数中执行我需要做的任何事情(当然,在加载数据后,在模型中触发该回调)。