2014-01-29 43 views
1

我在使用ember數據時遇到了一個奇怪的問題。通過以下用戶模型,一切都很好。Ember Data Endpoint問題

App.User= DS.Model.extend({ 
    firstName: attr(), 
    lastName: attr() 
}); 

我打電話給user.save(),併發送給/ users用正確的數據。然而,當我嘗試和使用上有

App.User= DS.Model.extend({ 
    firstName: DS.attr('string'), 
    lastName: DS.attr('string'), 
    friends: DS.hasMany('user'), 
    followers: DS.hasMany('user'), 
}); 

出於某種原因,有我的呼喚user.save(該模型關係的用戶模型),它發佈到/用戶(注意大小寫。此外,在響應它預計格式化{「用戶」:{...}}而不是{「用戶」:{...}}

任何人都遇到過這個嗎?我總是可以添加額外的端點,如果可能的話,希望它能夠統一工作

+0

我沒有看到這個搶,你可以更新我的jsbin複製? http://emberjs.jsbin.com/OxIDiVU/151/edit – Kingpin2k

+0

我發現問題kingpin2k。請參閱下面的解釋。感謝您設置jsbin。 – Rob

回答

0

我做了更多的挖掘,看起來當你向模型添加一個關係時,有一個計算屬性叫relationshipsByName。在我的例子中,roperty會將meta.type屬性設置爲'User'。它的工作原理沒有關係,因爲我用'user'調用了createRecord方法,所以我假定它使用這個作爲類型。當關系被添加時,它使用'用戶'

我發現modelFor調用解析器對鍵進行標準化。所以解決方案是添加一個像下面這樣的自定義解析器。

App = Ember.Application.create({ 
    Resolver: Ember.DefaultResolver.extend({ 
     normalize: function(fullName) { 
      var n = this._super(fullName); 
      if(fullName.startsWith('model')){ 
       n = n.replaceAt(6, n[6].toLowerCase()); 
      } 
      return n; 
      } 
     }) 
}); 

*注意我有startsWith字符串擴展和replaceAt