2013-05-03 69 views
0

我有這樣的設置:require.js + Backbone.js的,那裏面填充使用取骨幹Backbone.js的不會獲取數據並填充集合

orders.js(集合)的功能集合

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(視圖)

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將不填充集合,雖然瀏覽器檢測到XHR json/items:

我已經試過這個解決方案Backbone.js + Rest. Collection is not populated after fetch(),但它仍然不起作用。有什麼辦法可以獲取數據並自動將其填充到集合中?或者我錯過了什麼?

PS:抱歉蠻力代碼發佈...

編輯:更新的代碼上順序:取上不會做任何事情,但JSON /項目就叫通過XHR的瀏覽器

編輯成功回調.js文件,刪除STORE PARAM

編輯:我很感激,如果你可以看看這個網址http://mindanaojobs.net/backbone/並在它檢查的東西,似乎的jsfiddle棘手的一點點

+0

只是做了小提琴和刷新您的網址看到你固定它。 *嘆息* – 2013-05-03 08:47:46

回答

2

是否XHR響應包含對象的數組?如果有任何類型的對象包裝像

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

則需要相應地實現parse方法。

是的,我看了你的代碼,你需要這在您的訂單收藏:

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

我使用的是JSON格式,但它仍然不會填充,另外一個我忘記提及的是成功回調fetch不會執行任何操作,而只是加載XHR – user1076813 2013-05-03 05:46:57

+0

您需要實現'parse'就像我說的。骨幹需要一個PLAIN RAW ARRAY的對象。你正在發送一個包裝。看到我編輯的答案。 – 2013-05-03 06:11:17

+0

@ user1076813檢查了你的鏈接,當你返回對象'{items:[]}'時,Backbone需要JSON數組。您可以按@PeterLyons的建議在訂單集合中添加'parse'方法,或者從後端返回普通數組'']'。 – 2013-05-03 07:17:14