2012-04-02 21 views
0

私のcollection.fetchが機能せず、レンダリングされるモデルが取得されません。 私は私のrouter.jsバックボーンにfetch collection.fetchのモデルがありません

itemcollection = new ItemCollection(); 
     itemcollection.fetch(); 
     ItemListView.render(); 
     CartListView.render(); 
    } 

私itemcollection.js

define([ 
'underscore', 
'backbone', 
'model/item_model' 
    ],function(_, Backbone, Item){ 
var ItemCollection = Backbone.Collection.extend({ 
    model: Item, 
    url: 'http://posbeta.interprisesolutions.com/POSMobileConnector/Product/loaditembycategory/Event Materials', 
    parse: function(response) { 
    return response.Items; 
    } 
}); 
return ItemCollection; 
}); 

に私の見解これを持っている:私はそれが正しくレンダリング放火犯を使用して、それをデバッグするときに面白いことがある

initialize: function(){ 
    ItemCollection.bind("reset", this.render); 
}, 
render: function(){ 
    var data = { 
    items: itemcollection.models 
    } 
    var compiledTemplate = _.template(ItemListTemplate , data); 
    $("#itemContainer").html(compiledTemplate); 

}, 

をブレークポイントを削除すると何も表示されません。何か案は?

答えて

3

ベアでそれをコード化する試みを - それが返されますデータがロードされる前に直ちに実行されます。あなたは、コレクションのresetイベントに聞くことができ、また

itemcollection = new ItemCollection(); 
itemcollection.fetch({ 
    success: function() { 
    ItemListView.render(); 
    CartListView.render(); 
    } 
}); 

あなたのような何かを試みることができます。

+0

私はリセットを持っていますが、動作しません。 ItemCollection.bind( "reset"、this.render); – jongbanaag

+0

あなたは 'this'をバインドする必要があります:' ItemCollection.on( 'reset'、this.render、this); ' – stusmith

+0

私はちょうど説明のために尋ねたいと思います。アイテムリストビューですでにItemCollectionをインスタンス化していれば、別のビューでそれを使用したい場合は、もう一度インスタンス化する必要がありますか? – jongbanaag

0

urlは、その中にスペースがあります。

... /イベントマテリアルズ、

それを削除するか、fetchが非同期であることに注意して%20

+0

hmm。ありがとうございましたが、それは前に働いた。私はインスタンス化されたコレクションを返す前だったので。いくつかの悪い習慣を言うので、私はそれを削除した "return new ItemCollection"。 – jongbanaag

関連する問題