未捕获的错误:必须为CollectionView指定“url”属性或函数

时间:2012-10-16 15:11:36

标签: backbone.js

我知道这个错误已经出现过几次,但我仍然不确定如何正确地进行这项工作..

我的魔力从这里开始:

    var list_edit_member_view = new app.views.ListMemberEdit({
      el: $("#enterprise_member_list_edit_container"),
      list_ids: list_ids
    });
    list_edit_member_view.render();

这会加载此视图( ListMemberEdit.js ),它在render()中有这个:

this.list_edit_member_view = new app.views.CollectionView({
  el: $("#enterprise_member_list_edit_container"),
  collection: app.peers,
  list_item: app.views.ListMemberEditSelection, 
  list_item_options: {list_ids: this.options.list_ids} 
});

加载一个CollectionView视图,将其list_item_options呈现为模型视图。它位于此文件(ListMemberEditSelection.js)内,当我执行this.destroy时,它将返回:

Uncaught Error: A "url" property or function must be specified

所以这让我觉得模型或模型URL没有被定义..我只是不确定在哪里放这个,因为它的工作方式非常类似于我的其他部分做大致相同的事情.. < / p>

有什么想法?我为模糊道歉。如果您还有其他想要了解的内容,请与我们联系!

我很好奇是否可以在对象模型或集合本身中看到 这个URL属性。

3 个答案:

答案 0 :(得分:16)

这是因为destroy()函数也会调用Backbone.sync来更新服务器,而不仅仅是前端的模型。 http://backbonejs.org/#Model-destroy

因此,如果您使用REST来同步数据,则需要在模型中设置url属性,以便Backbone知道发送请求的位置:

Backbone.Model.extend({
    url: "http://myapi.com/"
})

为了更灵活,您还可以设置urlRoot:http://backbonejs.org/#Model-urlRoot

答案 1 :(得分:9)

我遇到了类似问题,我从模型默认值中删除了"id":"",问题解决了。

答案 2 :(得分:2)

我确实收到了类似的错误 试试这个:我只是假设你的模型看起来像什么

window.MyModel = Backbone.Model.extend({
  url: function(){
    return this.instanceUrl;
  },
  initialize: function(props){
    this.instanceUrl = props.url;
  } 
}

请查看我自己发布的这个问题,了解更多详情:https://stackoverflow.com/a/11700275/405117

我提供此参考,因为这里的答案帮助我更好地理解

希望这有帮助!