gpt4 book ai didi

javascript - Ember CLI "Nothing Handled the Action"

转载 作者:行者123 更新时间:2023-11-27 23:52:54 25 4
gpt4 key购买 nike

我正在处理Ryan LaBouve's YouTube tutorial关于使用 Ember CLI 构建 TodoMVC 应用程序。我已经完成了大约一半,现在在模板中添加一个条件。当双击(待办事项列表)项目时,它应该触发一个函数 editTodo,该函数将属性“isEditing”设置为 true 并用输入替换文本盒子。

双击功能根本不起作用。它在控制台中抛出以下错误:

Uncaught Error: Nothing handled the action 'editTodo'. 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.

这是相关的模板部分(todos.hbs):

      <section id="main">
<ul id="todo-list">
{{#each todo in model itemComtroller="todo"}}
<li {{bind-attr class="todo.isCompleted:completed todo.isEditing:editing"}}>
{{#if todo.isEditing}}
<input class="edit">
{{else}}
{{input type="checkbox" class="toggle" checked=todo.isCompleted}}
<label {{action "editTodo" on="doubleClick"}}>{{todo.title}}</label><button class="destroy"></button>
{{/if}}
</li>
{{/each}}
</ul>

<input type="checkbox" id="toggle-all">
</section>

这是带有“editTodo”函数的 Controller (todo.js):

import Ember from 'ember';

export default Ember.ObjectController.extend({
actions: {
editTodo: function() {
this.set('isEditing', true);
}
},
isEditing: false,
isCompleted: function(key, value) {
var model = this.get('model');

if (value === undefined ) {
return model.get('isCompleted');
} else {
model.set('isCompleted', value);
model.save();
return value;
}
}.property('model.isCompleted')
});

我已将我的代码与视频和相关的 Github repo 交叉引用并且仍然找不到问题的原因。 SO 上也有相关问题,但我还没有见过这样的问题。显然我是 Ember.js 的新手,可以使用我能得到的所有帮助。

谢谢!

最佳答案

您似乎遇到了 Ember 1.13.4 中引入的错误。我不确定它是什么,但它与使用项目 Controller 并在循环中执行操作有关。目前,您可以降级到 Ember 1.13.3 或更低版本来解决该问题。我将提交一份错误报告,以便在 Ember 的更高版本中修复此问题。

从长远来看,您将不会编写这样的代码。项目 Controller 已在 Ember 2.0 中完全删除,因此在使用 Ember 2.0 时,您可能会转而使用组件来应对此类情况。现在您可以练习使用 Ember 1.13.3。

差点忘了:

Code that works in 1.13.3

Same code broken in 1.13.4

编辑:Link to GitHub issue

EDIT2:在 1.12.0 和 1.13.0 之间,Ember 中的某些行为似乎发生了变化(可能是另一个错误?)。由于某种原因,操作不再被项目 Controller 捕获,而是直接发送到路由 Controller 。我不是 100% 确定这是为什么,但作为修复,您可以降级到 Ember 1.12 或将 editTodo 操作移至 todos Controller 。

编辑3:Link to second Github issue

EDIT4:正如第二个错误单中所建议的,您还可以更改操作的目标:

 <label {{action "editTodo" on="doubleClick" target="todo"}}>{{todo.title}}</label>

关于javascript - Ember CLI "Nothing Handled the Action",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com