2012-02-19 12 views
3

でコールバックをバインドI次のコードを持っている: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 
    ); 
    }, 

意図は()$に.get関数が終了した後に呼び出されるべきことは、レンダリングです。しかし、コールバック関数を_.bindでバインドした後でも、コンソールには "Object has no function render"という文字が表示されます。私はここで間違ってバインドを使用していますか?

答えて

6

_.bindので、新しい関数を返します。

callBack = _.bind(callBack, this); 

ます。また_.bindAllを使用することができますが、あなたは関数を定義後それを呼び出す必要があります。それ以外の場合は、_.bindAllに電話をかけた時点では機能はありません。この場合、thisは機能で構成されないため、this.callBack = ...を使用する必要があります。

_.bind_.bindAllの両方を使用すると、余計です。

2

私は通常、私のモデルにコールバックをパラメータとして与える「ロード」メソッドを書いています。次に、ビュー内のrender()メソッドからこのメソッドを呼び出し、コールバック関数で行う必要がある処理を行います(もちろん、データがロードされた後にそのモデルでコールバックがトリガーされます)。

関連する問題