0

下面复制view Todo.EditTodoView的 TodoMVC 的 Ember.js 行让我感到困惑:

{{#each filteredTodos itemController="todo"}}
    ...
    {{#if isEditing}}
        {{view Todos.EditTodoView todoBinding="this"}}
    ...

它不工作,你可以在这个 jsbin中看到。当我双击编辑待办事项时,当前文本消失并且输入不会更新。

我知道那"this"是 TodoController itemController(请参阅此 jsbin 示例中的更多内容),但是其中的“todo”todoBinding呢?


该指南具有使其工作的代码,方法是:

{{view Todos.EditTodoView valueBinding="title"}}

它还说这一行将valuethis<input>的属性绑定到了title的这个实例的属性TodoController


那么这是怎么回事todoBinding="this"?它是过时的代码吗?

4

1 回答 1

1

让我试着解释一下你的困惑。

我知道“this”是 TodoController,因为有 itemController(在这个 jsbin 示例中查看更多信息),但是 todoBinding 中的“todo”呢?

假设this设置为 defined是正确的itemController TodoController。但是,确实在示例中该行todoBinding="this"应该读取controllerBinding="this",因为我们正在尝试访问withcontroller中的属性。EditTodoViewthis.get('controller').acceptChanges()

所以您现在有两个选择,您可以更改EditTodoViewto中的代码this.get('todo').acceptChanges()或通过绑定到controller属性来更改模板中的controllerBinding="this".

这里的漏洞可能是todoBinding="this"where todointodoBinding可以被称为任何你想要的,fooBinding="this"只要你然后访问EditTodoViewwith中的正确名称this.get('foo').acceptChanges()

它不工作,你可以在这个 jsbin 中看到。当我双击编辑待办事项时,当前文本消失并且输入不会更新。

在你的jsbin中也缺少一些东西,绑定到我添加的 todo 的标题,这是 todo 没有更新的原因。在这里查看您的工作jsbin

我希望这现在更有意义。

于 2013-06-08T18:49:55.757 回答