在我的ember-app中,我有这个模型:
//models/photo.js
export default DS.Model.extend({
image: DS.attr(),
title: DS.attr('string'),
caption: DS.attr('string'),
published: DS.attr('boolean')
});
然后我必须从REST api获取数据;特别是照片模型应该以这种方式从2个端点进行处理:
这很简单:
var photos = this.store.findAll('photo')
和ember-data将自动调用/ photos端点,因为这遵循其约定;
在任何情况下它都会返回一个照片对象数组,比如/ photos端点; 但在这种情况下,无法做到
var photos = this.store.findAll('photos')
就像在/ aaa路线中一样,因为这样做会告诉ember-data从/ photosopopetch获取;
如何从不同路由中的不同端点获取相同的模型? (我使用带有ember-data 2.2.1的ember 2.2.0)
答案 0 :(得分:1)
除非你正在进行简单的ajax调用并推送有效负载来存储或修补适配器,否则你不能这样做。我不建议搞乱使用ember数据及其适配器,因为它肯定会回来咬你。您可以做的是传入一个参数并更改API控制器中的逻辑以对该参数执行if / else检查并发送您需要的相关数据。
路线1 - this.store.query('photo', { type: 'png' })
路线2 - this.store.query('photo', { type: 'jpeg' })
答案 1 :(得分:0)
简短的回答是你不能,因为适配器是每个型号,而不是每个路线。
但是,要解决此问题,您可以使用与store.push
/ store.pushPayload
配对的普通ajax调用将数据加载到商店中。
有关详细信息,请参阅store documentation。