我有2个不同的模块listings
和contacts
。每个都有自己的路线和控制器。现在有一项新要求,contacts
页面中必须显示listings
的部分信息。我很难弄清楚如何访问contacts
路径中的listings
模型。
我浏览了Ember文档,我遇到了两种方法来访问路径中的不同控制器。一个是控制器内的needs
哈希,另一个是路由中的setupController
哈希。我试过了但都失败了。我最有可能做错了什么。我在下面创建了一个JSFiddle。如果有人能指出我正确的方向,我真的很感激。
PS:我没有使用Ember数据
答案 0 :(得分:1)
这需要一点点习惯路由器。仅当路由对应于当前URL时才会触发路由。因此,如果它不是路由器树结构中的直接祖先,那么您不希望依赖控制器(也不是该控制器上的模型)。
/listings
或/contacts
,他们只是兄弟姐妹。CRM.Router.map(function() {
this.resource('listings');
this.resource('contacts');
});
/contacts
或/contacts/listings
)。您会注意到,如果没有通过联系人,您就无法访问列表,因此联系人始终可以依赖和使用联系人。CRM.Router.map(function() {
this.resource('contacts', function(){
this.resource('listings');
});
});
如果您需要在一条路线中使用多个模型,您可能需要查看EmberJS: How to load multiple models on the same route?(请务必阅读第二个答案,因为第一个答案会导致不必要的副作用)。