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

Tri*_*rip 8 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();
Run Code Online (Sandbox Code Playgroud)

这会加载这个View(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} 
});
Run Code Online (Sandbox Code Playgroud)

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

Uncaught Error: A "url" property or function must be specified
Run Code Online (Sandbox Code Playgroud)

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

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

我很好奇是否有可能看到对象模型或集合本身中写入此URL属性的位置.

Sim*_*ias 16

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

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

Backbone.Model.extend({
    url: "http://myapi.com/"
})
Run Code Online (Sandbox Code Playgroud)

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


小智 9

我有类似的问题,我"id":""从我的模型中删除了默认值,问题解决了.