2012-04-02 2 views
0

Mon collection.fetch ne fonctionne pas et ne rend pas les modèles à rendre. J'ai sur mon router.jspas de modèles sur aller chercher collection.fetch dans backbone

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

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

mon avis:

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

}, 

La chose drôle est quand je déboguer en utilisant Firebug, il affiche correctement quand je supprime le point d'arrêt, il n'affiche rien. des idées?

Répondre

3

Gardez à l'esprit que fetch est asynchrone - il retourne immédiatement, avant que les données aient été chargées.

Vous pouvez essayer quelque chose comme:

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

Sinon, vous pouvez écouter sur l'événement reset de la collection.

+0

j'ai la remise à zéro si mais ne fonctionne pas. ItemCollection.bind ("reset", this.render); – jongbanaag

+0

Vous devrez peut-être lier 'this':' ItemCollection.on ('reset', this.render, this); ' – stusmith

+0

Je voudrais juste demander des précisions. Si j'ai déjà installé ItemCollection sur l'affichage de la liste des éléments, dois-je l'instancier de nouveau si je veux l'utiliser sur une autre vue? – jongbanaag

0

L'URL a un espace dans le:

.../Matériaux de l'événement,

Essayez de le supprimer ou l'encoder avec %20

+0

hmm. merci mais ça a fonctionné avant. Parce qu'avant, je retournais une collection instanciée. "return new ItemCollection" puisque certains disent que c'est une mauvaise pratique donc je l'ai enlevé. – jongbanaag