2014-02-11 47 views
1

嗨取我有backboneJS下一個模型:如何使用與發送標識

var Type = Backbone.Model.extend({ 
    url : "/api/SomeRoute" 
}); 
var model = new Type({id:"MyAlias"}); 
model.fetch(); 

在其餘部分在SomeRoute我有2個動作,它返回我的模型。第一個接收到Id並返回Id模型,第二個返回集合的參數。但是當我在JS中調用fetch()時,它不會在請求中發送Id。我做錯了什麼?

回答

3

如果在模型中指定了id屬性。然後,獲取請求將會像/ api/SomeROute/id

而不是url給urlRoot。 如果指定了urlRoot,則模型ID將被追加。

var Type = Backbone.Model.extend({ 
    urlRoot : "/api/SomeRoute" 
}); 
+0

但你可以看到我在Type'的'構造函數設置好的標識。或者我做錯了什麼? – Maris

+0

,它仍然會「.../api/SomeRout」,但不會「.../api/SomeRoute/MyAlias」。有任何想法嗎? – Maris

+0

@Maris我編輯了我的答案,請檢查。 – Konza

2

重寫你的URL到下一個:

var type = Backbone.Model.extend({ 
    url: function(){ 
    return "/api/SomeRoute/" + this.get("id"); 
    } 
}); 
var model = new Type({id: "SomeId"}); 
model.fetch(); 
+0

謝謝你這個作品。但它看起來像'hack'。 – Maris

+0

我認爲這不是黑客)))因爲骨幹編譯我的url功能))但在其他方如果我的模型沒有ID)) –

+0

但是如果你需要使用'model.save()'? POST請求將轉到/ api/SomeRoute/SomeId。但其餘的都不對。 – Maris