【发布时间】:2016-06-03 20:16:42
【问题描述】:
首先,我对 Ember 还很陌生,所以事情的交互方式很容易让我感到困惑。
我正在使用现有的 Ember 应用程序。在应用程序的routes/application.js.es6 中定义了操作。鉴于这些操作在应用程序路由中,我可以从任何地方访问它们吗?
我特别希望在模板/组件中使用应用程序的路由操作之一。
在组件的js文件中,我需要注入或导入一些东西来使用应用程序路由中的动作吗?
【问题讨论】:
标签: ember.js
首先,我对 Ember 还很陌生,所以事情的交互方式很容易让我感到困惑。
我正在使用现有的 Ember 应用程序。在应用程序的routes/application.js.es6 中定义了操作。鉴于这些操作在应用程序路由中,我可以从任何地方访问它们吗?
我特别希望在模板/组件中使用应用程序的路由操作之一。
在组件的js文件中,我需要注入或导入一些东西来使用应用程序路由中的动作吗?
【问题讨论】:
标签: ember.js
This demo perfectly demonstrates the thing you try to achieve.
首先,在应用路由中定义action:
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
myActionFromApp() {
console.log('myAction from application fired');
}
}
});
然后在模板中将动作名称传递给组件:
{{my-component myAction='myActionFromApp'}}
然后您可以从组件调用您的 ApplicationRoute 操作:
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
myAction() {
this.sendAction('myAction');
}
}
});
在演示中,当有人点击按钮时我会这样做:
<button {{action 'myAction'}}>Fire action myAction</button>
控制台中的结果是:
来自应用程序的 myAction 已触发
当您点击预期的按钮时。
【讨论】: