我猜你的模型看起来像这样:
var M = Backbone.Model.extend({
url: '/api/v1/item/?format=json',
// ...
});
模型的url
for 应该是一个函数,但由于它最终会通过内部getValue
函数,因此字符串也将“工作”;如果您检查我链接到的源,您会明白为什么一个字符串url
会为您提供您所看到的结果。
解决方案是url
按照您应该使用的功能:
网址 model.url()
返回模型资源在服务器上的相对 URL。如果您的模型位于其他地方,请使用正确的逻辑覆盖此方法。生成表单的 URL: ,如果模型不是集合的一部分,则"/[collection.url]/[id]"
回退到。"/[urlRoot]/id"
你可能想要这样的东西:
url: function() {
if(this.isNew())
return '/api/v1/item/?format=json';
return '/api/v1/item/' + encodeURIComponent(this.id) + '/?format=json';
}
或这个:
url: function() {
if(this.isNew())
return '/api/v1/item/?format=json';
return '/api/v1/item/' + encodeURIComponent(this.get('id')) + '/?format=json';
}