Backbone JSモデルのデフォルト動作ではのコレクションのURLを返します。具体的には、モデルurlRoot
が指定されていない限り、が指定されています。私は動作を動作させるように見えることはできません。BackboneJS model.url using collection.url
ドキュメントから:
model.url()...形式のURLを生成します: "[collection.url]/[ID]" デフォルトでは、しかし、あなたが明示的に指定することによって無効にすることができますモデルのコレクションを考慮しない場合はurlRoot。ここで
それぞれ私のコレクション、そしてモデルです:
var MyCollection = Backbone.Collection.extend({
model: Model,
initialize: function(options){
this.options = options || {};
},
url: function(){
return "/theurl/" + this.options.param;
}
});
return MyCollection;
...
var MyModel = Backbone.Model.extend({
urlRoot: '/theurl',
initialize: function() {
}
});
return MyModel;
モデルが収集せずにロードされると、それは素晴らしい作品と/theurl
に提出したが、コレクションにロードされると、すべてのメソッドが/theurl/param/
に送信されます。
ドキュメントを正しく理解している場合は、モデルのurlRoot
がこの動作を上書きする必要があります。モデルURLは/theurl/param/{MODEL-ID}
である必要があります。
私が紛失/誤解していることに関するアイデアはありますか?
...
PS:コレクションからmodel: Model
は、それは常にあなたがurlRoot
を指定した場合でも、コレクションのURLを使用しますRequireJS
感謝を。ドキュメントはあまりにもあいまいです。モデルURLをコレクションURLの末尾に追加しない理由についてのアイデアはありますか? – caleb
いくつかあります。あなたはクライアント上でモデルを作成しましたか?そうであれば、IDはサーバーにまだ保存されていないため、必ずしもIDを持つ必要はありません。この場合、それはcIdを持つだけです。 – dcarson
これは代わりに 'yourModel.save({}、{url:yourModel.urlRoot});'と言うべきだと思います。現在書かれている方法は、 'save'の最初の引数が属性ハッシュであるため、オブジェクトの' url'プロパティを 'set'することになります。 – flyingL123