문제

각 TODO 항목이 사용자에게 속한 간단한 TODO 앱을 사용하고 있습니다.이 오류가 발생했습니다 :

Uncaught Error: Nothing handled the action 'createTodo'.
.

나는 내가 루트를 놓치고 컨트롤러가 누락되었지만, 나는 내가 무엇을 해야하는지 실제로 확신하지 못한다.

app / 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>
.

도움이 되었습니까?

해결책

문제는 createTodo가 ToDoconTroller에서 구현되는 반면 createTodo 템플릿에서 users/show 액션을 사용하는 것입니다.CreateTodo가 구현되지 않은 UsersShowController로 조치가 전송됩니다.createTodo 동작을 UsersShowController로 이동하면 모든 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top