【发布时间】:2017-06-09 01:40:03
【问题描述】:
我对分配给路由的控制器有点困惑。
我想在路由上创建一个名为“showModal”的操作,但是当我使用此代码时,ember 发送一个错误,表明该操作未在路由上定义:
export default Ember.Route.extend({
actions: {
showModal: function (params) {
console.info(params);
if (params) {
Custombox.open({
target: '.mModal',
closer: false
});
} else {
Custombox.close();
}
}
}
});
但是,如果我使用下一个代码似乎一切正常,任何组件都可以调用模态操作:
export default Ember.Route.extend({
setupController: function (controller, model) {
this._super(...arguments);
controller.set('actions', this.actions);
},
actions: {
showModal: function (params) {
console.info(params);
if (params) {
Custombox.open({
target: '.mModal',
closer: false
});
} else {
Custombox.close();
}
}
}
});
我想知道,如何将控制器分配给路由?所以动作将在路线上正确定义。
顺便说一句,我使用下一个 ember-cli 命令来创建我的路由:ember g route new/quote
更新 1:
添加hbs代码
<div class=row>
{{form-employee-search modal=(action "showModal")}}
</div>
【问题讨论】:
-
如果你使用闭包动作,它们不能只在控制器上的路由上定义。
-
想法是组件执行一个动作,然后调用路由动作,第二个代码执行功能
-
你能把你的模板粘贴到你调用组件的地方吗?
-
是的,你的动作被定义为闭包动作,这很好,唯一的问题是它们需要在控制器中定义,或者使用我发布的答案中的帮助器,然后你可以在路由中定义它们。跨度>
标签: javascript ember.js