我对分配给路线的 Controller 有点困惑。
我想在路线上创建一个名为“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();
}
}
}
});
我想知道如何为路线分配 Controller ?因此操作将在路线上正确定义。
顺便说一句,我使用下一个 ember-cli 命令来创建我的路线:ember groute new/quote
更新1:
添加了 hbs 代码
<div class=row>
{{form-employee-search modal=(action "showModal")}}
</div>
最佳答案
您可能将模板中的操作定义为关闭操作(使用 (action 'actionName') 语法)。关闭操作不能在需要在 Controller 上定义的路由上定义。您可以创建 Controller 并在那里定义操作,或者使用 ember-route-action-helper 来定义路由上的关闭操作。 https://github.com/DockYard/ember-route-action-helper
关于您如何将 Controller 分配给路线的问题,您只需创建与您的路线具有相同路径的 Controller 即可。来自 guide
The value of my-controller-name must match the name of the Route that renders it. So a Route named blog-post would have a matching Controller named blog-post.
You only need to generate a Controller if you want to customize its properties or provide any actions. If you have no customizations, Ember will provide a Controller instance for you at run time.
关于javascript - EmberJS 2.10 如何正确设置嵌套路由 Controller 来设置路由上的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41825097/