我在某些用例中使用了带有路由器 v2 的 emberjs,它的效果非常好。对于通过单击 {{linkto ..}} 构造(具有相关的嵌套资源)来增加页面复杂性的用例,我没有任何问题。
但有时可能需要同时显示两个(或更多)不同的模型。
例如:
我有模型人物和模型宠物。
就像是:
DS.RESTAdapter.configure("plurals",{"person" : "people"})
App.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({namespace: 'restservice'})
});
var attr = DS.attr;
App.Person = DS.Model.extend({
firstName: attr('string'),
lastName: attr('string'),
birthDay: attr('string'),
pets: DS.hasMany('App.Pet')
});
App.Pet = DS.Model.extend({
name: attr('string'),
species: attr('string'),
person: DS.belongsTo('App.Person')
});
出于某种原因,模型 Person 和 Pet 的实例存在,但尚未定义这两个模型之间的关系。
在通过 {{linkto ..}} 构造调用的页面中,我想实现一个人 - 宠物分配编辑器。在这种情况下,我想显示两个列表:
- 人员名单
- 宠物清单
通常,此页面的路线只对应一个模型,但对于人 - 宠物分配编辑器来说,两个模型应该同时显示是完全自然的(无需额外的用户干预)。
实现它的最佳方法是什么。我应该在没有路由概念的情况下加载模型吗?
确实存在这样的方式:
(represent the person - pet assigment editor 'page')
|
|
{{linkto ..}} -------> 资源路由 -----> '拆分重定向'
- ----------------> resource-route person
- ----------------> resource-route pet
(like a url to a frame set which bear two (or more) 'parallel' requests)
拆分重定向后,我有 3 条活动路线:
- 人的资源路线 - 宠物分配编辑器
- 资源路线人
- 资源路线宠物
之后,可以进行正常的增量钻取(更深的嵌套路线:选择一个人,选择一个宠物..)动作。
我可以在没有这样一个概念的情况下实现我的用例,但我喜欢路由概念,并且有兴趣在更复杂的场景中使用它。
是否存在这样的概念?处理这种情况的 emberjs 方法是什么?
此致
安德烈亚斯