backbone.js不会获取数据并填充集合

时间:2013-05-03 05:30:36

标签: rest backbone.js requirejs backbone-views

我有这个设置:require.js + backbone.js,使用骨干的fetch函数填充集合

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:抱歉发布了粗暴的代码......

编辑:fetch上的成功回调除了浏览器上的XHR刚刚调用的json / items之外什么都不做

编辑:更新order.js上的代码,删除了STORE参数

编辑:我很感激,如果你能看到这个网址http://mindanaojobs.net/backbone/并检查其中的内容,jsfiddle似乎有点棘手

1 个答案:

答案 0 :(得分:2)

XHR响应是否包含对象数组?如果有任何类型的对象包装器,如

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

然后你需要相应地实现parse方法。

是的,我查看了您的代码,您需要在Orders集合中使用此代码:

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