2012-04-02 7 views
0

Mein collection.fetch funktioniert nicht und die Modelle werden nicht gerendert. Ich habe diese auf meinem router.jskeine Modelle auf fetch collection.fetch im Backbone

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

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

meiner Sicht:

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

}, 

Das Komische ist, wenn ich es firebug es mit debuggen macht richtig Wenn ich den Haltepunkt entferne, wird nichts angezeigt. irgendwelche Ideen?

Antwort

3

Beachten Sie, dass fetch asynchron ist - es gibt unmittelbar bevor die Daten geladen wurden.

Sie könnten versuchen, so etwas wie:

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

Alternativ Sie auf der reset Veranstaltung Sammlung hören können.

+0

Ich habe den Reset zwar, aber es funktioniert nicht. ItemCollection.bind ("reset", this.render); – jongbanaag

+0

Eventuell müssen Sie 'this' binden:' ItemCollection.on ('reset', this.render, this); ' – stusmith

+0

ich möchte nur zur Klärung bitten. Wenn ich ItemCollection bereits in der Artikelliste instanziiert habe, muss ich es erneut instanziieren, wenn ich es in einer anderen Ansicht verwenden möchte? – jongbanaag

0

Die URL hat einen Raum, in dem:

.../Eventmaterialien,

Versuchen Sie es zu entfernen oder dafür kodierenden mit %20

+0

hmm. Danke, aber es hat vorher funktioniert. Denn bevor ich eine instanziierte Sammlung zurück brachte. "return new ItemCollection", da einige sagen, es sei eine schlechte Praxis, also habe ich es entfernt. – jongbanaag

Verwandte Themen