[英]Ember Data load models from different paths
I have a backend with routes: 我有一个路线的后端:
resources :movies do
collection do
get :drafts
end
end
store.find('movie') will load from /movies, but I want to load from /movies/drafts. store.find('movie')将从/ movies加载,但我想从/ movies / drafts加载。
There is 'suffix' option for finders, thus I realized that I need to write custom finder. 查找器有“后缀”选项,因此我意识到我需要编写自定义查找器。 Could anyone post an example?
有人可以举一个例子吗?
I tried this code: 我尝试了这段代码:
App.Movie.reopenClass( {
findDrafts: function(store) {
$.getJSON('/movies/drafts', function(payload) {
store.pushPayload('movie', payload);
});
return store.all('movie');
}
})
But #pushPayload never returns an array of models, thus I use store.all, but it returns all objects in a store. 但是#pushPayload永远不会返回模型数组,因此我使用store.all,但它会返回商店中的所有对象。 I need just retrieved models by custom ajax request.
我只需要通过自定义ajax请求检索模型。
There is also store.pushMany that returns an array of models, but it expects normalized payload. 还有store.pushMany返回一个模型数组,但它需要标准化的有效负载。 What is a proper way to normalize json before passing it to pushMany?
在将json传递给pushMany之前,对其进行规范化的正确方法是什么?
I can't just replace buildURL in adapter, because I want to use default urls too. 我不能只在适配器中替换buildURL,因为我也想使用默认URL。
UPDATE: 更新:
Possible solution: 可能的解决方案:
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');
It seems to verbose for such simple use case. 对于这种简单的用例,似乎很冗长。 Any ideas, improvements?
有什么想法,改进吗? Am I missing something?
我想念什么吗?
If possible you should really look at moving to Ember Data 1.0 beta. 如果可能的话,您应该真正考虑迁移到Ember Data 1.0 beta。 Things have changed quite a lot.
事情已经发生了很大的变化。
In the latest version you can override the pathForType
function in your Adapter
. 在最新版本中,您可以在
Adapter
覆盖pathForType
函数。
https://github.com/emberjs/data/blob/master/TRANSITION.md#underscored-api-endpoints https://github.com/emberjs/data/blob/master/TRANSITION.md#underscored-api-endpoints
That TRANSITION
document is very helpful for making the update. 该
TRANSITION
文档对进行更新非常有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.