我正在通過Ryan LaBouve's YouTube tutorial構建使用Ember CLI構建TodoMVC應用程序。我大約過了一半,現在在模板中添加了一個條件。當雙擊一個(待辦事項列表)項時,它應該觸發一個功能editTodo,它將屬性「isEditing」設置爲true,並用輸入框替換文本。Ember CLI「Nothing Handled the Action」
doubleClick函數根本不起作用。它拋出在控制檯以下錯誤:
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」 功能控制器(待辦事項.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的新手,可以使用我可以獲得的所有幫助。
謝謝!
謝謝。是的,我已閱讀有關已過時的組件。 Npm找不到1.13.3,但我可以降級到v1.13.1。我將它降級爲npm和bower,然後按照正式說明降級應用程序。但是,我仍然有同樣的問題。我已經提出了你的答案,因爲它是有道理的 - 雖然我仍然有問題。上面我的控制器中的函數(「editTodo」)似乎遵循類似於jsbin中的語法。真的不明白爲什麼行動沒有被該功能處理。 –
在您的瀏覽器控制檯中,「Ember.VERSION」實際上等於「1.13.1」嗎?根據您的開發環境,可能會有某種構建/緩存問題。 – GJK
其實控制檯顯示我正在運行1.13.3(雖然我安裝了1.13.1)。在安裝之前,我清理了bower和npm緩存。 –