我正在开发一个简单的待办事项应用,其中每个待办事项属于用户。我收到此错误:
Uncaught Error: Nothing handled the action 'createTodo'.
我想我错过了一条路线,也许还有一个控制器,但我不确定我需要做什么。
应用/ router.js:
import Ember from 'ember';
var Router = Ember.Router.extend({
location: TodoENV.locationType
});
Router.map(function() {
this.route('about');
this.resource('users', function() {
this.route('show', {path: ':user_id'});
});
});
export default Router;
应用/路由/用户/ index.js:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('user');
}
});
应用/模型/ user.js的:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
todos: DS.hasMany('todo')
});
应用/模型/ todo.js:
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
user: DS.belongsTo('user')
});
应用/控制器/ todo.js:
import Ember from 'ember';
export default Ember.ArrayController.extend({
actions: {
createTodo: function() {
var title = this.get('newTitle');
if (!title.trim()) { return; }
var todo = this.store.createRecord('todo', {
title: title // how do I get the user id?
});
this.set('newTitle', '');
todo.save();
}
}
});
应用/模板/用户/ show.hbs:
<h4>{{name}}</h4>
<h5>Todos</h5>
{{input type="text" id="new-todo" placeholder="new todo"
value=newTitle action="createTodo"}}
<ul>
{{#each todos}}
<li>{{title}}</li>
{{/each}}
</ul>
答案 0 :(得分:1)
问题是createTodo是在TodoController中实现的,而您在createTodo
模板中使用users/show
操作。操作将发送到未实现createTodo的UsersShowController
。将createTodo
操作移至UsersShowController
,一切正常。