2014-04-02 2 views
1

У меня есть эта структура на моих маршрутах.Лучшая практика emberJS для контроллеров

this.resource('stations', function() { 
    this.route('view', {path: ':name'}); 
    this.route('edit', {path: ':name/edit'}); 
    this.route('create', {path: ':name/create'}); 
}); 

У меня есть эти контроллеры

App.StationsEditController = Ember.ObjectController.extend({ 
    actions: { 
     editStation: function() { 
     //Logic for edit Station 
     } 
    } 
}); 

App.StationsCreateController = Ember.ObjectController.extend({ 
    actions: { 
     createStation: function() { 
     //Logic for create Station 
     } 
    } 
}); 

Пожалуйста, вы можете сказать мне, если это хорошая практика?

Также я хотел бы просто использовать один контроллер, называемый станциями, со списком моих действий, которые могут отображать все мои представления внутри этого контроллера? Пример: -

App.StationsController = Ember.ObjectController.extend({ 
    actions: { 
     createStation: function() { 
     //Logic for create Station 
     } 
     editStation: function() { 
     //Logic for create Station 
     } 
    } 
}); 

Открыт для представления об этом сценарии.

спасибо.

ответ

1

Способ, которым у вас установлены ваши контроллеры, считается нормой, так что да, это хорошая практика. :)

Однако объединение действий в одном контроллере не будет работать так. Действия имеют конкретный путь барботирования. Сначала они пробуют контроллер маршрута, затем маршрут, затем они пузыряют иерархию маршрутов. Они делают не пузырь вверх по иерархии контроллера. Поэтому, если вы хотите объединить действия вместе, вам нужно будет определить действия в вашем StationsRoute, а не StationsController.

+0

У Alex Speller есть отличное объяснение, где поставить логику/действия модели в ваше приложение Ember: http://discuss.emberjs.com/t/where-should-i-define-a-save-action/5062 – rjhilgefort

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