2015-02-25 4 views
6

Я просмотрел связанные сообщения в течение нескольких часов, но не смог найти правильный ответ, чтобы исправить проблему, которую я испытываю.Контроллер Ember: ничего не обработано действием

Я получаю сообщение об ошибке:

Uncaught Error: Nothing handled the action 'edit'. 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.

Я думаю, что контроллер обработки вещи неправильно, или это бурлит на неправильный путь?

App.EventDetailsController = Ember.ObjectController.extend({ 
    isEditing: false, 

actions: { 
    edit: function() { 
     this.set('isEditing', true); 
    }, 

    doneEditing: function() { 
     this.set('isEditing', false); 
    } 
    } 
}); 


App = Ember.Application.create(); 

    App.Router.map(function() { 
    // put your routes here 
    this.route('events', {path: '/events'}); 
    this.route('createevent', {path: '/createevent'}); 
    this.route('eventdetails', {path: ':eventdetails_id'}); 
}); 

App.EventsRoute = Ember.Route.extend({ 
model: function() { 
    return events; 
} 
}); 

App.EventDetailsRoute = Ember.Route.extend({ 
model: function(params) { 
    return events.findBy('id', params.eventdetails_id); 
} 
}); 

Кто-нибудь знает, почему это не сработает?

+0

Пожалуйста, покажите шаблон. –

ответ

2

Вы, вероятно, хотите, чтобы определить ваши маршруты, как это:

App.Router.map(function() { 
    this.resource('events', function() {       // /events   <-- your event listing 
     this.resource('event', {path: ':event_id'}, function() { // /events/1  <-- your event details 
      this.route('edit');          // /events/1/edit <-- edit an event 
     }); 
     this.route('create');          // /events/create <-- create your event 
    }); 
}); 

Но кроме того, обратите внимание, что действия пузырек вверх по маршрутам, поэтому попытайтесь переместить свой обработчик действия в EventDetailsRoute вместо этого.

Прочитайте часть в руководстве, что переговоры об этом здесь: http://emberjs.com/guides/templates/actions/#toc_action-bubbling

App.EventDetailsRoute = Ember.Route.extend({ 
    actions: { 
     edit: function() { 
      this.set('isEditing', true); 
     }, 

     doneEditing: function() { 
      this.set('isEditing', false); 
     }, 

     //or maybe better: 
     toggleEditing: function() { 
      this.toggleProperty('isEditing'); 
     } 
    }, 

    model: function(params) { 
     return events.findBy('id', params.eventdetails_id); 
    } 
}); 
+1

Это исправило мою проблему! Это очень ценится! – sunoceansand

+0

Работа над действиями родительского маршрута! –

0

У меня есть подозрение, что это связано с тем, что вы не используете правильные соглашения об именах. Если имя вашего маршрута - EventDetailsRoute, тогда маршрут должен быть указан в маршрутизаторе как event-details.

+0

спасибо, мне нужно изучить правила именования. – sunoceansand

0

Эта проблема возникает, когда наш шаблон и контроллер имя отличается. Пожалуйста, проверьте свой шаблон и имя контроллера

Смежные вопросы