0

我在 ember 中遇到了一个更大的项目的问题,当我处于与该模型的控制器无关的模板中时,我想从模型中获取信息。

我得到了这些模板:

<script type="text/x-handlebars" data-template-name="community">
   {{model.name}}
   {{outlet}}
</script>

//users is a subroute from community
<script type="text/x-handlebars" data-template-name="communityUsers">
   //assume i want to display something from a community here like:
   {{community.id}}
   {{#each user in model}}
     <li>{{user.name}}</li>
   {{/each}}
</script>

在路线中,我获取了适当的模型,因此对于社区,我得到了 1 个社区,而在 communityUsers 中,我有一个包含用户的数组

有谁知道最好的解决方案?

4

2 回答 2

1

因此,据我了解,您正在尝试访问communityController其子模板模板内部的模型communityUsers。为此,您必须定义您communityUsersController需要communityController

needs: ['community']  

然后在你的模板中

{{#each user in controllers.community.model}}
 <li>{{user.name}}</li>
{{/each}}
于 2013-08-23T17:11:47.853 回答
1

我在 ember 中遇到了一个更大的项目的问题,当我处于与该模型的控制器无关的模板中时,我想从模型中获取信息。

假设你的社区是这样的:

App.CommunityRoute = Ember.Route.extend({
  model: function() {
    return App.Community.find();
  }
});

进一步假设您希望从与您无关的控制器访问CommunityController(在模型挂钩返回后获取它的内容集),您可以使用needsAPI 并定义对它的依赖

App.CommunityUsersController = Ember.Objectontroller.extend({
  // here dependence definition
  needs: ['community'],
  // create an observer that returns the community you want
  // I've chosen just the first one
  choosenCommunity: function() {
    return this.get('controllers.community').objectAt(0);
  }.observes('controllers.community')
});

所以现在在您的communityUsers模板中,您可以访问这些属性

<script type="text/x-handlebars" data-template-name="communityUsers">
   //assume i want to display something from a community here like:
   {{choosenCommunity.id}}
   {{#each user in choosenCommunity.users}}
     <li>{{user.name}}</li>
   {{/each}}
</script>

最重要的是,自从绑定以来,一切都将保持最新状态。

希望能帮助到你。

于 2013-08-23T17:19:18.877 回答