2013-02-09 59 views
1

後,我從rev 4躍升至rev 11,下面的代碼不工作了:自定義URL在Ember.Model在修訂11

App.Coffee 
    brand: DS.attr "string" 

App.Coffee.reopenClass 
    url: "different/location/coffee" 

我怎樣才能在rev 11設置自定義網址?

+0

你有什麼錯誤嗎? – intuitivepixel 2013-02-09 12:03:36

+0

沒有,但似乎也沒有發生......它像'localhost/coffees'一樣建立了url,而'rev 4'建立了像'localhost/different/location/coffee'這樣的URL ...... – kraftwer1 2013-02-09 12:06:05

+0

咖啡似乎對我來說,你的代碼的其他部分是攔截...你有更多的模型?你能提供更多的代碼示例嗎? – intuitivepixel 2013-02-09 12:16:20

回答

0

你做它的存儲與替代buildUrl

Store: DS.Store.extend({ 
    revision: 11, 
    adapter: DS.RESTAdapter.create({ 
     buildURL: function(url) { 
      return 'different/location/coffee/%@'.fmt(url); 
     } 
    }) 
}) 

(配合使用pluralization它會創造奇蹟。)

+0

事情是,我也有其他模型。 'Model.CoffeeMachine'應該使用普通的'localhost/coffeemachines/1'。我喜歡關於'Model.reopenClass(url:「xy」)'的事情是我可以爲不同的模型使用不同的URL,併爲我的RESTful接口模擬嵌套的URL行爲。 '多元化'會爲我做嗎? – kraftwer1 2013-02-09 13:08:13

+0

您可以爲模型實現不同的適配器,然後使用上面的'buildURL'方法。請參閱「多個適配器」:http://emberjs.com/guides/models/defining-a-store/ – Wildhoney 2013-02-09 13:10:31

+0

這是一個有趣的方法,我會嘗試一下...... – kraftwer1 2013-02-09 13:31:44

0

您可以通過註冊一個適配器模式實現這一點:

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: DS.RESTAdapter.create() 
}); 

App.Store.registerAdapter('App.Coffee', DS.RESTAdapter.extend({ 
    namespace: 'different/location' 
}));