2012-10-16 48 views
8

指定我知道这个错误已经拿出了几次,但我仍然不知道如何使这项工作适当地..未捕获的错误:“URL”属性或功能必须为的CollectionView

我魔术从这里开始:

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),其中有这样的渲染():

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属性将写入对象模型或集合本身。

回答

16

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

所以,如果你使用REST同步你的数据,你需要设置模型中的一个url属性,因此骨干知道从哪里发出请求:

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

为了让更多的灵活性,你也可以设置一个urlRoot:http://backbonejs.org/#Model-urlRoot

+1

嗯..它似乎在其他地方没有这个'url'在模型中像你描述的那样实例化。在工作方面,如果我做'$ .bar.model.collection.url',我可以找到一个写出来的URL ..所以问题是...集合URL的实例化在哪里,如果它不像你这样的模型建议.. – Trip

2

我的确收到类似的错误 试试这个:我只是做一个假设模型可能是什么样子

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

请看看这个问题,我已经公布自己的详细信息:https://stackoverflow.com/a/11700275/405117

我提供这个参考作为答案在这里帮助我更好地了解

希望这有助于!

9

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

+2

哇......为我工作.... :) –

相关问题