我有这个设置: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似乎有点棘手
答案 0 :(得分:2)
XHR响应是否包含对象数组?如果有任何类型的对象包装器,如
{items: [{...}, {...}]}
然后你需要相应地实现parse
方法。
是的,我查看了您的代码,您需要在Orders集合中使用此代码:
parse: function (response) { return response.items;}