Я работаю через Ryan LaBouve's YouTube tutorial по созданию приложения TodoMVC с Ember CLI. Я примерно на полпути, добавив в шаблон условное выражение. Когда элемент (список дел) дважды щелкнут, он должен вызвать функцию editTodo, которая устанавливает свойство «isEditing» на true и заменяет текст полем ввода.Ember CLI «Ничего не обработал действие»
Функция 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" (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 и могу использовать всю помощь, которую я могу получить.
СПАСИБО!
Спасибо. Да, я читал об устаревших компонентах. Npm не смог найти 1.13.3, но я смог перейти на v1.13.1. Я понизил его на npm и bower и последовал официальным инструкциям, чтобы понизить приложение. Тем не менее, у меня все еще такая же проблема. Я поддержал ваш ответ, потому что это имеет смысл - хотя у меня все еще есть проблемы.Функция («editTodo») в моем контроллере выше, похоже, соответствует аналогичному синтаксису в вашем jsbin. На самом деле не вижу, почему действие не обрабатывается этой функцией. –
В консоли вашего браузера находится 'Ember.VERSION', фактически равное' 1.13.1'? В зависимости от вашей среды разработки может возникнуть проблема с построением/кэшированием. – GJK
На самом деле консоль показывает, что я запускаю 1.13.3 (хотя я установил 1.13.1). Перед установкой я очистил кеш и npm-кеш. –