与Ember控制器的奇怪错误

时间:2015-04-20 18:37:43

标签: javascript ember.js ember-cli

我在Ember Cli版本:0.2.3

我正在与Ember一起探索,并尝试一个非常简单的应用程序。

我的模板/ about.hbs

中有这个
<h1>About</h1>

<p>I'll write something interesting here</p>

<button type="btn btn=primary"{{action 'clickMe'}}>Click me!</button>

和我的控制器/ about_controller.js

Blogger.AboutController = Ember.Controller.extend({
  actions: {
    clickMe: function() {
      alert('Something something');
    }
  }
});

当我点击按钮时出现此错误,我检查了语法并且似乎无法捕捉到什么错误。我需要一些新鲜的眼睛。

Uncaught Error: Nothing handled the action 'clickMe'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble.

现在,我理解了消息的内容,但我还不知道如何修复它。

2 个答案:

答案 0 :(得分:2)

Ember可能找不到您的控制器。您可以使用ember inspector进行调试。无论如何,您应该在ember cli项目中使用ES6约定。您可以更多地了解主题here

无论如何,尝试通过键入

使用命令行创建about控制器
ember generate controller about

然后手动添加您的操作。

答案 1 :(得分:2)

您是否正在为您的计划使用ember cli或Ember入门套件。

如果您使用Ember cli,那么您应该创建像 - 应用程序/模板/ about.hbs 应用程序/控制器/ about.js 你应该在app / router.js中创建一个条目[我认为你必须这样做。] 在router.js-

中输入
Router.map(function() {
  this.route('about');
 });

现在你的模板/ about.hbs应该是 -

<h1>About</h1>

<p>I'll write something interesting here</p>

<button {{action 'clickMe'}}>Click me!</button>

和controllers / about.js应该是 -

import Ember from 'ember';
export default Ember.ObjectController.extend({
actions:{
       clickMe: function() {
      alert('Something something');
    }
  }
});

完成上述所有更改后,在CMD上执行以下命令 - ember服务器(这应该启动服务器)

如果以上述模式执行,您的代码应该可以正常工作。 命名约定在Ember中非常重要。