EmberJS - 在单条路线中访问多个模型

时间:2014-07-14 03:54:12

标签: javascript ember.js

我有2个不同的模块listingscontacts。每个都有自己的路线和控制器。现在有一项新要求,contacts页面中必须显示listings的部分信息。我很难弄清楚如何访问contacts路径中的listings模型。

我浏览了Ember文档,我遇到了两种方法来访问路径中的不同控制器。一个是控制器内的needs哈希,另一个是路由中的setupController哈希。我试过了但都失败了。我最有可能做错了什么。我在下面创建了一个JSFiddle。如果有人能指出我正确的方向,我真的很感激。

http://jsfiddle.net/NAFq5/3/

PS:我没有使用Ember数据

1 个答案:

答案 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?(请务必阅读第二个答案,因为第一个答案会导致不必要的副作用)。

示例:http://jsfiddle.net/NAFq5/5/