0

我有这个设置: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。fetch() 之后没有填充集合,但它仍然不起作用。有什么方法可以获取数据并将其自动填充到集合中?还是我错过了什么?

PS:很抱歉发布粗暴代码......

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

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

编辑:如果您可以查看此网址http://mindanaojobs.net/backbone/并检查其中的内容,我将不胜感激,jsfiddle 似乎有点棘手

4

1 回答 1

2

Does the XHR response contain an array of objects? If there is any kind of object wrapper like

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

then you need to implement the parse method accordingly.

Yes, I looked at your code and you need this in your Orders collection:

parse: function (response) { return response.items;}
于 2013-05-03T05:34:04.043 回答