在Emberjs中,如何在模板文件中使用路由中定义的属性



假设我有一个路由文件,如:

import Ember from 'ember';
export default Ember.Route.extend({
    [...]
    password: "...",
    [...]
});

如何在模板中使用密码属性
如果我使用{{password}},它不起作用,但是,如果我定义了一个具有密码属性的控制器,那么我可以在模板中使用{{password}},但考虑到控制器不应该再使用,我的选项是什么?

我知道我可以在路线上做这样的事情:

import Ember from 'ember';
export default Ember.Route.extend({
    model(){
       return {
            password: "...",
       }
    },
});

然后访问{{model.password}},但我认为这不是解决问题的方法。

Route设置控制器,并负责将数据传递给控制器

您可以使用model钩子将数据传递给控制器,如上面所示,或者与setupController挂钩类似:

setupController(model, controller) {
 this._super(...arguments);
 var pass = this.get('password');
 controller.set('password', pass);
}

还有其他方法,比如从控制器访问路由,但这将是一个破解

最新更新