سؤال

أنا أعمل على تطبيق بسيط للمهام حيث ينتمي كل عنصر من عناصر المهام إلى المستخدم.أتلقى هذا الخطأ:

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>
هل كانت مفيدة؟

المحلول

المشكلة هي أن createTodo يتم تنفيذه في TodoController أثناء استخدامك createTodo العمل في users/show نموذج.يتم إرسال الإجراء إلى UsersShowController حيث لم يتم تنفيذ createTodo.يتحرك createTodo العمل في UsersShowController ويجب أن يكون كل شيء على ما يرام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top