自RC3.1以来{{action}}行为发生了什么变化,打破了ember.js todo代码

时间:2013-08-04 15:35:43

标签: ember.js

我目前正在阅读Ember.js入门指南,但我正在使用v1.0.0-rc.6.3而不是指南中提到的RC3.1。

现在我到达了关于实现单个待办事项的编辑的章节,但是指南中实现的{{action}}处理程序似乎不起作用,所以我的第一个假设是事件的行为发生了变化。

到目前为止,这是我在JSBin中的代码:http://jsbin.com/ogixej/1/edit

如您所见,当您双击todo项时,控制台中会出现错误:

Uncaught Error: Nothing handled the event 'editTodo'. 

你能告诉我改变了我应该如何正确地做到这一点吗?

2 个答案:

答案 0 :(得分:2)

由于TodoController是负责您需要在TodosController上定义此项目的项目的控制器,如下所示:

Todos.TodosController = Ember.ArrayController.extend({
  itemController: 'todo',
  ...
});

这样就可以正确调用editTodo函数。在这里工作jsbin

希望它有所帮助。

答案 1 :(得分:2)

我认识到这应该是一个评论,但我的名声太低了。

虽然@ intuitivePixel的答案是正确的,并且已被接受,但在转换示例(Getting Started Guide - Adding Child Routes)期间,它在后面的示例中并不适用。一旦我将模板分开,我必须在itemController期间将{{#each}}属性从控制器移动到模板中,如下所示:

{{#each itemController="todo"}}
    ...
{{/each}}

如果仔细观察,你可以在Ember的第一个示例块中找到这段代码,但是在周围的叙述中并没有提到它,所以我错过了它。