2013-02-26 42 views
2

我已经建立了一个路线从而牵引帐户从REST端点信息:Ember.js:循环遍历非关联查看从ArrayController数据

Social.Router.map(function() { 
    this.resource('accounts'); 
}); 

Social.AccountsRoute = Ember.Route.extend({ 
    model: function() { 
     return Social.Account.find(); 
    } 
}); 

Social.Account = DS.Model.extend({ 
    name: DS.attr('string'), 
    username: DS.attr('string') 
}); 

Social.AccountsController = Ember.ArrayController.extend(); 

我可以遍历像这样在我的模板数据:

<script type="text/x-handlebars" data-template-name="accountItem"> 
    {{#each account in controller}} 
     <div class="avatar-name"> 
      <p>{{account.name}}</p> 
      <p>{{account.username}}</p> 
     </div> 
    {{/each}} 
</script> 

我有另一个模板,我想使用相同的帐户数据。我如何从视图中检索与帐户模型相关的信息,以便我可以在相应的模板中使其可用?

Social.NewPostView = Ember.View.extend({ 
    tagName: 'div', 
    accounts: function(){ 
     // return Account data here? 
    } 
}); 

更新1

Here's a quick view of my UI

左边是 “活” 的帐户数据。右侧是静态HTML。我想重复使用右侧左侧的数据。合理?

+0

如果你有嵌套在上面的新视图,你应该有权访问它的上下文。你能更详细地描述你的用户界面和路线吗?你是否需要在嵌套视图中再次使用完全相同的“find.all”,或者只需要UI在显示其他内容时继续显示数组? – 2013-02-26 22:23:14

回答

3

你应该看看需要属性的控制器。这使您可以指定一个您可以从当前控制器访问的控制器列表。在emberjs guides

NewPostController

更多信息

Social.NewPostController = Ember.ObjectController.extend({ 
    needs: ['accounts'], 

    init: function(){ 
     this._super(); 
     console.log(this.get('controllers.accounts')) 
    } 
}); 


然后,从您的模板:

<script type="text/x-handlebars" data-template-name="newPost"> 
    {{#each account in controller.controllers.accounts}} 
     <div class="avatar-name"> 
      <p>{{account.name}}</p> 
      <p>{{account.username}}</p> 
     </div> 
    {{/each}} 
</script> 


+0

Hrm。这似乎是一个很好的解决方案。我还没有'Social.NewPostController',但我已经添加了它,而我什么都没有。我尝试通过访问控制台中的Social.NewPostController.get('accounts')'来调试,并得到一个TypeError。我以前从未使用过需求选项,因此可能比我想象的要多。 – commadelimited 2013-02-26 22:52:33

+0

@commadelimited:如果你想从控制台进行调试:'Social .__ container __。lookup(“controller:newPost”)。get('controllers.accounts')' – ThomasDurin 2013-02-26 23:19:23

+0

Thanks Thomas。我会看看你添加的其他行。 – commadelimited 2013-02-27 03:02:31