2014-02-17 67 views
0

在這裏工作是我的支柱代碼骨幹取指不與單模式

var UserModel=Backbone.Model.extend({ 
    url: 'http://api.myapi.com/user' 
}); 

var user=new UserModel(); 
user.set({id:1}); 
user.fetch(); 
console.log(user.get('screenname')); 

當我改變的URL

url: 'http://api.myapi.com/user/1' 
這將返回用戶而不是與1的ID用戶的整個集合

我找回了我想要的用戶。爲什麼我沒有拿到備案的「用戶1」時,我user.set({id:1});

- 我的API是在不同的領域,這就是爲什麼我在我的網址屬性整個網址。請幫忙,我準備放棄骨幹。

回答

0

您需要將id添加到您的模型網址中。

url: function() { 
if(this.id) { 
    return 'http://api.myapi.com/user/' + this.id; 
} 

return 'http://api.myapi.com/user'; 
} 

然後,當你實例化用戶模型時,你可以通過它傳遞一個像這樣的id。

var user = new UserModel({id: 1}); 

然後,當你這樣做user.fetch()它會得到'http://api.myapi.com/user/1'

此外,通過不通過的idUserModel骨幹將發送POST請求'http://api.myapi.com/user'

+1

哇,工作。爲什麼我必須這樣做?我以爲抓取本應該爲你做? – Gilberg

+0

如果您使用urlRoot屬性,Backbone將會生效。 –

+0

這就是我提出的:) –

5

您必須設置urlRooturl和骨幹將id添加到您網址的末尾:

var UserModel=Backbone.Model.extend({ 
    urlRoot: 'http://api.myapi.com/user' 
}); 
+0

您是否嘗試過方案? –

0

有你需要驗證兩點:

  1. 型號使用urlRoot作爲休息API網址,但收藏使用url
  2. 輸出結果在fetch成功回調

    變種的usermodel = Backbone.Model.extend({ urlRoot: 'http://api.myapi.com/user' });

    var user = new UserModel(); user.set({id:1});

    //它是安全的在成功回調 user.fetch({成功輸出結果是保證了API調用:函數(){ 的console.log(user.get( '屏幕名'));} });