2015-02-25 10 views
6

Ich habe stundenlang verwandte Beiträge durchgesehen, konnte aber nicht die richtige Antwort finden, um das Problem zu beheben, das ich habe.Ember-Controller: Nichts hat die Aktion behandelt

Ich erhalte die Fehlermeldung:

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.

Ich denke, dass die Steuerung Dinge falsch Handhabung, oder es brodelt auf einen falschen Weg nach oben?

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

Weiß jemand, warum das nicht funktionieren würde?

+0

Bitte Vorlage zeigen. –

Antwort

2

Sie wollen wahrscheinlich Ihre Routen wie folgt definieren:

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

Aber abgesehen davon, beachten Sie, dass Aktionen sprudeln durch die Routen, so versuchen Sie Ihre Aktionen Handler zum EventDetailsRoute stattdessen bewegen.

Lesen Sie den Teil in der Anleitung, die hier darüber spricht: 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

Das hat mein Problem behoben! Es ist sehr geschätzt! – sunoceansand

+0

Das Verschieben der Aktionen auf die übergeordnete Route hat funktioniert! –

0

Ich habe den Verdacht, dass es nicht mit den richtigen Namenskonventionen zu tun hat. Wenn der Name Ihrer Route EventDetailsRoute lautet, sollte die Route im Router als event-details referenziert werden.

+0

danke, ich muss die Namenskonventionen studieren. – sunoceansand

0

Dieses Problem wird verursacht, wenn unsere Vorlage und Controller-Namen unterscheidet. Bitte überprüfen Sie Ihre Vorlage und Controller Name

Verwandte Themen