1. A "url" property or function must be specified
urlmodel.url()
返回模型资源在服务器上位置的相对 URL 。 如果模型放在其它地方,可通过合理的逻辑重载该方法。 生成 URLs 的默认形式为:"/[collection.url]/[id]", 如果模型不是集合的一部分,你可以通过指定明确的urlRoot覆盖。
urlRootmodel.urlRoot or model.urlRoot()
如果使用的集合外部的模型,通过指定 urlRoot 来设置生成基于模型 id 的 URLs 的默认url 函数。 "[urlRoot]/id"。通常情况下,你不会需要定义这一点。 需要注意的是urlRoot也可以是一个函数。
Backbone源码:
url: function() {
var base =
_.result(this, 'urlRoot') ||
_.result(this.collection, 'url') ||
urlError();
if (this.isNew()) return base;
return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
},
可以看出其是判断的顺序是urlRoot、url,都没有才报错。
所以:如果Model是属于Collection的,直接在Collection设置url就可以了;但是若直接创建一个Model并对其操作,就必须要设置urlRoot。最好的方式是Model中的urlRoot和Collection的url都设置一下