2015-04-20 47 views
1

我在Ember Cli版本:0.2.3Ember控制器奇怪的错误

我目前正在探索与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. 

现在,我明白了信息的意思,但我不知道如何解决它。

+1

[命名约定](http://www.ember-cli.com/#naming-conventions)很重要,文件名应该是'about.js',你应该使用es6模块。 –

+0

@Kitler当我第一次创建about控制器我有它命名about.js,虽然我得到了这个错误 '未捕获的错误:预计发现:'控制器:关于'博客/控制器/约'内''但'未定义' 。你忘了在'博主/控制器/'关于'吗?'出口默认'?' – Diego

+0

你忘了导出吗? :P –

回答

2

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

无论如何,尝试通过键入

ember generate controller about 

创建使用命令行about控制器,然后手动添加你的行动。

+0

像魅力一样工作。尽管代码非常相似,除了'''Blogger.AboutController'''改为'''export default''' 感谢@Mateusz Nowak – Diego

2

您是否在为您的程序使用ember cli或Ember入门工具包。

如果您使用的灰烬CLI,那么你应该创建一个类似的文件 - 应用/模板/ about.hbs 应用程序/控制器/ about.js ,你应该在应用程序的一个条目/ 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> 

和控制器/ about.js应该是─

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

使得所有上述修改后的执行CMD命令如下 - 烬服务器(这应该启动服务器)

,如果你在上面的图案做你的代码应该工作。 命名约定在Ember中非常重要。

+0

是的,控制器的命名是不正确的。正如@Kitler提到的(ES6),全局变量已被ES6模块取代。可悲的是,大多数例子都被弃用了。感谢您查看这个 – Diego