【问题标题】:backbone.js won't fetch data and populate the collection主干.js 不会获取数据并填充集合
【发布时间】:2013-05-03 05:30:35
【问题描述】:

我有这个设置: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 参数

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

【问题讨论】:

  • 只是做了一个小提琴并刷新了您的 URL 以查看您已修复它。 叹息

标签: rest backbone.js requirejs backbone-views


【解决方案1】:

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

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

那么你需要相应地实现parse方法。

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

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

【讨论】:

  • 我正在使用该 JSON 格式,但它仍然不会填充,我忘记提及的另一件事是 fetch 的成功回调不会做任何事情,而是它只是加载 XHR
  • 你需要像我说的那样实现parse。 Backbone 需要一个 PLAIN RAW ARRAY 对象。您正在发回一个包装器。请参阅我编辑的答案。
  • @user1076813 检查了您的链接,当您返回对象 {items:[]} 时,Backbone 需要 JSON 项目数组。您可以按照@PeterLyons 的建议在订单集合中添加parse 方法,或者从后端返回纯数组[]
  • 现在在解析方法上工作,但现在的问题是它返回一个错误:undefined is not a function Backbone.js(1.0.0):906,是不是json不匹配模型?抱歉,我无法掌握它的窍门,在这个堆栈中仍然是新的,我更新了代码,如果你能看一下,我很感激? mindanaojobs.net/backbone
  • 我认为 collection.reset(data) 有问题? w/c 有点不兼容将数据添加到集合中?
猜你喜欢
  • 2014-12-31
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多