javascript - EmberJS 2.10 如何正确设置嵌套路由 Controller 来设置路由上的操作?

标签 javascript ember.js

我对分配给路线的 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/

相关文章:

javascript - 在 RxJS 中是否可以在 auditTime() 操作中测试未决值?

JavaScript 改变对象内部的变量

javascript - 非常快速的无限循环,不会阻塞 I/O

javascript - ES6 数组解构怪异

javascript - NodeJS HTTP请求未按顺序执行

javascript - 如何在emberjs中获取运行转换的目标

ruby-on-rails - 带有 Rails API 的 Ember POST 405(不允许)

javascript - 使用 id 以外的其他值

javascript - 使用 Ember-data 序列化非常规 JSON

json - 返回 ember 数据 `find` 或 `findAll` 请求中的总行数