Ember.js:断言失败:在(生成的 myroute 控制器)中找不到名为“actionTest”的操作

Raf*_*ini 3 twitter-bootstrap ember.js

我试图使用该组件bs-button灰烬引导派遣一个简单的动作,将写日志的东西。为此,我ember-cli根据项目 Github 页面使用并安装了 ember-bootstrap创建了一个新应用程序。

然后,我使用 ember-cli ( ember g route myroute)创建了一个路由并编写了以下代码:

应用程序/路由/myroute.js

import Ember from 'ember';

export default Ember.Route.extend({

  actions: {
    actionTest(value){
      console.log('on actionTest:', value);
    }
  }

});
Run Code Online (Sandbox Code Playgroud)

应用程序/模板/myroute.hbs

{{#bs-button onClick=(action "actionTest")}}Run test action{{/bs-button}}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问时,控制台中出现以下错误(没有呈现任何内容):

message: "Assertion Failed: An action named 'actionTest' was not found in (generated myroute controller)"
Run Code Online (Sandbox Code Playgroud)

其次是:

Uncaught TypeError: Cannot read property 'getAttribute' of undefined
Run Code Online (Sandbox Code Playgroud)

也许是一个完全愚蠢的错误,但我在文档和示例中都没有发现任何内容。

环境:

余烬cli:

$ ember -v
ember-cli: 2.10.1
node: 6.9.2
os: darwin x64
Run Code Online (Sandbox Code Playgroud)

铬控制台:

DEBUG: -------------------------------
DEBUG: Ember      : 2.10.2
DEBUG: Ember Data : 2.11.3
DEBUG: jQuery     : 3.1.1
DEBUG: -------------------------------
Run Code Online (Sandbox Code Playgroud)

小智 6

我相信按照设计,该事件仅发送到相应的控制器或组件,如操作文档中所述(尽管未明确)。

因此,一种解决方案是创建一个myroute控制器(或创建一个组件来封装行为),并在那里声明操作。

否则,您可以包含ember-route-action-helper并使用以下内容执行您的操作:

{{#bs-button onClick=(route-action "actionTest")}}Run test action{{/bs-button}}
Run Code Online (Sandbox Code Playgroud)