在骨干网中获取collection.fetch时没有模型

时间:2012-04-02 07:21:29

标签: javascript backbone.js

我的collection.fetch不起作用,也没有得到要渲染的模型。 我在router.js上有这个。

itemcollection = new ItemCollection();
        itemcollection.fetch();
        ItemListView.render();
        CartListView.render();
    }

我的itemcollection.js

define([
'underscore',
'backbone',
'model/item_model'
  ],function(_, Backbone, Item){
var ItemCollection = Backbone.Collection.extend({
    model: Item,
    url: 'http://posbeta.interprisesolutions.com/POSMobileConnector/Product/loaditembycategory/Event Materials',
    parse: function(response) {
    return response.Items;
  }
});
return ItemCollection;
});

我的观点:

initialize: function(){
  ItemCollection.bind("reset", this.render );
},
render: function(){
  var data = {
    items: itemcollection.models
  }
  var compiledTemplate = _.template( ItemListTemplate , data);
  $("#itemContainer").html( compiledTemplate );

},

有趣的是,当我使用firebug调试它时,当我删除它没有显示任何东西的断点时它正确呈现。任何想法?

2 个答案:

答案 0 :(得分:3)

请记住fetch是异步的 - 它会在数据加载之前立即返回。

您可以尝试以下方式:

itemcollection = new ItemCollection();
itemcollection.fetch({
  success: function () {
    ItemListView.render();
    CartListView.render();
  }
});

或者,您可以收听该集合的reset事件。

答案 1 :(得分:0)

网址中有一个空格:

... /活动资料',

尝试删除它或使用%20

对其进行编码