2

我设置了一个从 REST 端点提取帐户信息的路由:

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>

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

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

更新 1

这是我的 UI 的快速视图

左侧是“实时”帐户数据。右侧是静态 HTML。我想重用右边左边的数据。有道理?

4

1 回答 1

3

您应该查看控制器的需求属性。这允许您指定可以从当前控制器访问的控制器列表。

更多信息emberjs guides

新邮政控制器

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>


于 2013-02-26T22:35:46.767 回答