1

我有一個名爲TodoModel模型和一個名爲Todos集合上的外部API PUT和DELETE請求。我用它來獲取數據的URL是外部API,因此我重寫我收藏的網址功能GET,與Backbone.js的

url:function(){ 
    return "http://abc.com/data" 
} 

當我寫Todos.fetch()從我的觀點也能正常工作。

現在,我想通過一些參數,如http://abc.com/data/[id]

中的每個元素的點擊會有不同的API調用不同的ID。例如:

  • http://abc.com/data/123
  • http://abc.com/data/234

如何實現這一目標?

如果我在我的模型的URL設置爲這個外部URL?我該如何解決這個問題?

回答

3

如果設置在收集你的模型的ID,同步將自動工作。舉例來說,如果你有一個Todo模型的123一個ID,並save()它,它會POSThttp://abc.com/data/123

Collection.url docs:在集合中

型號將使用URL來建構自己的網址。

Model.url docs

生成形式的URL:"/[collection.url]/[id]",回落至"/[urlRoot]/id"如果模型不是集合的一部分。

查看Backbone's sync documentation查看HTTP方法如何映射到集合中模型上的各種URL。

1

是的,我會在模型和集合上設置網址。

Todo = Backbone.Model.extend({ 
    url : function() { 
    var base = "http://abc.com/data/"; 
    if (this.isNew()) { 
     return base; 
    } else { 
     return base + this.get("id"); 
    } 
    } 
}); 
+0

你不應該有,如果集合的URL設置和模型使用IDS設置在模型的URL是這樣的。來自[Backbone Collection](http://backbonejs.org/#Collection)文檔:*「集合中的模型將使用url來構建它們自己的URL」,並從[Model](http:// backbonejs .org /#Model-url)docs:*「生成表單的URL:」/[collection.url]/[id]「,如果模型不是某個模型的一部分,則返回到」/ [urlRoot]/id「收集。「* –

+0

嗨,在這種情況下...我需要做Todo.fetch()嗎? – Sudo

+0

Hi Rob,那麼我如何傳遞ID?如果默認情況下需要收集URL,並且我希望將更多數據附加到該URL,那麼我應該如何使用模型來做到這一點? – Sudo