2013-10-27 3 views
2

У меня есть бэкенд с маршрутами:модель нагрузки Ember данные из различных путей

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, который возвращает массив моделей, но он ожидает нормализованной полезной нагрузки. Каков правильный способ нормализовать json, прежде чем передать его pushMany?

Я не могу просто заменить 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'); 

кажется, слишком разговорчивым для такого простого случая использования. Любые идеи, улучшения? Я что-то упускаю?

ответ

1

Если возможно, вам действительно стоит взглянуть на переход к бета-версии Ember Data 1.0. Все изменилось довольно много.

В последней версии вы можете переопределить функцию pathForType в своем Adapter.

https://github.com/emberjs/data/blob/master/TRANSITION.md#underscored-api-endpoints

Это TRANSITION документ очень полезно для создания обновления.

+0

Я на краю. Я не могу переопределить 'pathForType', потому что я также хочу загрузить из'/movies'. А также из других коллекционных действий, таких как 'movies/top_rated' или' movies/most_viewed'. – wildchild

Смежные вопросы