2013-05-03 5 views
0

j'ai cette configuration: require.js + Backbone.js, celle qui peuplent la collection en utilisant la fonction récupération de la colonne vertébraleBackbone.js ne récupère pas les données et remplir la collection

orders.js (collection)

define([ 
    'underscore', 
    'backbone', 
    'models/item' 
    ], function(_, Backbone, Item){ 

    var Orders = Backbone.Collection.extend({ 

     model: Item, 
     url: 'json/items', 

     initialize: function(){ 
     }, 

    }); 

    return orders = new Orders(); 

}); 

orders.js (vues)

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'collections/orders', 
    'models/item', 
    'text!templates/orders.tpl', 
    ], function($, _, Backbone, Orders, Item, ordersTemplate){ 
    var OrdersView = Backbone.View.extend({ 

    model: Orders, 
    template: _.template(ordersTemplate), 

    initialize: function() { 
     _.bindAll(this);  

     Orders.fetch({ success: function() { 
      console.log(Orders.models) 
     }}); 
    }, 

    }); 



    return OrdersView; 
}); 

Orders.fetch ne remplira pas la collection, si le navigateur détecte XSS json/items:

J'ai déjà essayé cette solution Backbone.js + Rest. Collection is not populated after fetch() mais ça ne marchera pas. Est-il possible de récupérer des données et de les ajouter automatiquement à la collection? Ou est-ce que je manque quelque chose?

PS: désolé pour l'affichage de code brute ...

EDIT: rappel de succès sur fetch ne rien faire, mais JSON/articles simplement appelés par XHR sur le navigateur

EDIT: Code de mise à jour sur commande .js, enlevé le MAGASIN param

EDIT: J'apprécie si vous pouvez regarder à cette url http://mindanaojobs.net/backbone/ et inspecter quelque chose en elle, jsFiddle semble un peu difficile

+0

juste fait un violon et rafraîchi votre URL pour voir que vous le fixe. * sigh * –

Répondre

2

la réponse XHR contient un tableau d'objets? S'il y a une sorte d'enveloppe d'objet comme

{items: [{...}, {...}]} 

alors vous devez implémenter la méthode parse en conséquence.

Oui, je regardais votre code et vous avez besoin dans votre collection Commandes:

parse: function (response) { return response.items;} 
+0

J'utilise ce format JSON mais il ne peuplera toujours pas, une autre chose que j'ai oublié de mentionner est que le callback réussi sur fetch ne fera rien mais à la place il chargera simplement le XHR – user1076813

+0

Vous devez implémenter 'parse' comme je l'ai dit. Backbone attend un ARRAY RAW PLAIN des objets. Vous renvoyez un wrapper. Voir ma réponse éditée. –

+0

@ user1076813 a vérifié votre lien, Backbone attend le tableau JSON d'éléments pendant que vous renvoyez l'objet '{items: []}'. Soit vous ajoutez la méthode 'parse' dans la collection des ordres comme le suggère @PeterLyons, soit vous retournez un tableau' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –

Questions connexes