在Ember中,如何从html文件中的当前车把访问不同模型的属性?

时间:2015-04-18 18:46:23

标签: javascript html ember.js model

我正在尝试做类似的事情:

{{#if model.user.isAdmin}}
<div>
 My name is {{model.user.name}}
</div>
{{/if}}

来自与用户无关的控制器的车把内部:

<script type="text/x-handlebars" data-template-name="events/new">

我该怎么做?如何使用/显示其他模型的值?

1 个答案:

答案 0 :(得分:1)

这可以通过多种方式完成。

如果您的新活动路线是例如用户路线(嵌套在您的路由器中)的子路线,您可以这样做:

// events/new controller
Ember.Controller.extend({
    needs: ['user'] // a reference to the user controller
});

// events/new template
{{ controllers.user.model.name }}

如果它不是子路由,您可以通过调用商店来访问用户模型:

// events/new route
Ember.Route.extend({
    // use the user model as your model
    model: function() {
        // load a user by its id, or remove the id to load all users
        return this.store.find('user',1);
    }
});

// events/new template
{{ model.name }}

或者您可以在events/new路线中使用多个模型:

// events/new route
Ember.Route.extend({
    // return multiple models
    model: function() {
        return Ember.RSVP.hash({
            event: this.store.createRecord('event', {
                // add event properties here if needed
            }),
            user: this.store.find('user',1),
            ...
        });
    }
});

// events/new template
{{ model.user.name }}

如您所见,这取决于您的路线与应用结构的关系。