【发布时间】:2015-09-20 14:24:57
【问题描述】:
我花了很多时间尝试在 Ember 中实现本应简单的事情:将动作从组件冒泡到应用程序控制器。文档说,为了传播一个动作,我需要做的就是在声明模板时声明该动作:
{{#if isLoggedIn}}
{{menu-bar action="authenticate"}}
{{/if}}
...然后从组件(嵌套在登录路由中)发送操作:
authenticate: function() {
//code omitted for brevity
this.sendAction('authenticate');
}
...应该由应用程序路由接收:
user: Ember.inject.service(),
isLoggedIn: false,
actions: {
authenticate: function(){
console.log('authenticated!');
this.set('isLoggedIn', this.get('user').isLoggedIn());
}
}
但事实并非如此。我浪费了很多时间试图找出原因。
我确信这很明显,但如果有人能告诉我我做错了什么,我将不胜感激。
【问题讨论】:
-
你能在 ember-twiddle.com 或 emberjs.jsbin.com 上设置演示吗?你在哪个模板中使用
{{menu-bar authenticate="authenticate"}}? -
嗨,我会尝试在 JSBin 中设置一些东西,尽管我以前从未这样做过。菜单栏在 application.hbs 模板中呈现,但组件在 login.hbs 模板中呈现(在 application.hbs 的出口中呈现)
-
这将有助于解决这个问题。
标签: ember.js