2012-02-19 27 views
3

回調我有以下代碼:綁定在Backbone.js的和Underscore.js

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 
    ); 
    }, 

的目的是,使()的$不用彷徨函數完成後,應調用。但是,即使在使用_.bind綁定回調函數之後,控制檯中仍然會出現「Object has no function render」。我在這裏使用綁定不正確嗎?

回答

6

_.bind返回一個新的功能,所以:

callBack = _.bind(callBack, this); 

您還可以使用_.bindAll,但你必須把它後您定義的功能。否則在您撥打_.bindAll時沒有任何功能。請注意,在這種情況下,您必須使用this.callBack = ...,否則this將不包含任何功能。

使用_.bind_.bindAll是多餘的。

2

我通常在我的模型上編寫一個'load'方法,我將回調函數作爲參數。然後,我從視圖中的render()方法中調用此方法,並在回調函數中執行我需要做的任何操作(當然,在數據加載後模型中會觸發該回調)。