簡體   English   中英

在骨干網中獲取單個模型,這為什么不起作用?

[英]Fetching a single model in backbone, why doesn't this work?

m是Backbone.Model的子類。 我希望m.url()返回'/ api / media / sources / 1',但是我得到了:

> m.id
1
> m.collection.url
"/api/media/sources"
> m.urlRoot
undefined
> m.url()
"/api/media/sources"

這是怎么回事?

當您希望將id附加到URL時,應設置urlRoot而不是url

看一下Backbone.Model.prototype.url默認實現,它將很有意義:

url: function() {
  var base =
    _.result(this, 'urlRoot') ||
    _.result(this.collection, 'url') ||
    urlError();
  if (this.isNew()) return base;
  return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
},

后來的評論顯示(在發布此答案之后)該問題與如何設置屬性有關。

通常,對於所有屬性更改,尤其是ID屬性,都應始終使用model.set("id", idValue) (如果在模型原型idAttribute設置為其他名稱,請使用該名稱作為第一個參數,而不是"id" 。)

更普遍地說,直接訪問model.attributes是一個壞主意-改為使用model.set()model.get() model.id屬性是一種便利,您基本上應該將其視為只讀; 骨干網將在涉及id屬性的每個set()調用中對其進行適當的修改。 –白金Azure 18小時前

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM