あなたのモデルは次のようになると思います:
var M = Backbone.Model.extend({
url: '/api/v1/item/?format=json',
// ...
});
モデルのurl
for は関数であるはずですが、最終的に内部関数を通過getValue
するため、文字列も「機能」します。url
リンク先のソースを確認すると、文字列 forが表示されている結果をもたらす理由がわかります。
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';
}