2015-02-25 9 views
6

Ho controllato i post correlati per ore, ma non sono riuscito a trovare la risposta giusta per risolvere il problema riscontrato.Controller Ember: nulla ha gestito l'azione

continuo a ricevere l'errore:

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.

Credo che il controllore è il trattamento delle cose sbagliate, o è zampillante per una strada sbagliata?

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); 
} 
}); 

Qualcuno sa perché questo non avrebbe funzionato?

+0

Si prega di mostrare il modello. –

risposta

2

probabilmente si desidera definire i percorsi in questo modo:

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 
    }); 
}); 

Ma a parte questo, si noti che le azioni bolla attraverso i percorsi, in modo da provare a spostare il vostro gestore di azioni al EventDetailsRoute invece.

leggere la parte nella guida che ne parla qui: 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

Questo ha risolto il mio problema! È molto apprezzato! – sunoceansand

+0

Lo spostamento delle azioni sul percorso principale ha funzionato! –

0

Ho il sospetto che si tratti di non utilizzare le convenzioni di denominazione appropriate. Se il nome del percorso è EventDetailsRoute, il percorso deve essere indicato nel router come event-details.

+0

grazie, ho bisogno di studiare le convenzioni sui nomi. – sunoceansand

0

Questo problema è causato quando il nostro modello e il controllore nome è diverso. Si prega di controllare il modello e il nome del controller

Problemi correlati