我有路線後端:從不同的路徑灰燼數據負荷模型
resources :movies do
collection do
get :drafts
end
end
store.find(「電影」)將從/加載電影,但我想從/電影/草稿加載。
發現者有'後綴'選項,因此我意識到我需要編寫自定義發現者。 任何人都可以發表一個例子嗎?
我試過這段代碼:
App.Movie.reopenClass( {
findDrafts: function(store) {
$.getJSON('/movies/drafts', function(payload) {
store.pushPayload('movie', payload);
});
return store.all('movie');
}
})
但#pushPayload永遠不會返回的模型數組,因此我用store.all,但它在商店將返回所有對象。我需要通過自定義ajax請求檢索模型。
還有一個store.pushMany,它返回一個模型數組,但它期望標準化的有效載荷。在將它傳遞給pushMany之前,對json進行規範化的正確方法是什麼?
我不能在適配器中替換buildURL,因爲我也想使用默認的URL。
UPDATE:
可能的解決辦法:
App.Store = DS.Store.extend({
revision: 11,
findAllByUrl: function(type, url) {
var self = this;
var promise = Ember.Deferred.create();
$.getJSON(url, function(payload) {
var serializer = self.serializerFor(type);
payload = serializer.extractArray(self, self.modelFor(type), payload);
var objects = self.pushMany(type, payload);
promise.resolve(objects);
});
return promise;
}
});
var records = this.get('store').findAllByUrl('movie', '/movies/drafts');
這似乎長篇大論這種簡單的用例。任何想法,改進?我錯過了什麼嗎?
我在邊緣。我無法重寫'pathForType',因爲我也想從'/ movies'加載。還有其他收集操作,如「movies/top_rated」或「movies/most_viewed」。 – wildchild