Действие Ember.js для контроллера

Когда я использую Ember Router, как я могу определить действия в шаблоне, которые подключены к контроллеру?

Пример здесь: http://jsfiddle.net/KvJ38/3/

Unter My Profile - это два действия: Один определяется на государство, и работает Два определяется на контроллере. Как я могу заставить это работать или я должен использовать другой подход?

App.Router = Em.Router.extend({
  enableLogging: true,
  location: 'hash',

  root: Em.State.extend({
    // EVENTS
    goHome: Ember.State.transitionTo('home'),
    viewProfile: Ember.State.transitionTo('profile'),

    // STATES
    home: Em.State.extend({
      route: '/',
      connectOutlets: function(router, context) {
        var appController = router.get('applicationController');
        appController.connectOutlet(App.HomeView);
      }
     }),

    // STATES
    profile: Em.State.extend({
      route: '/profile',
        connectOutlets: function(router, context) {
          var appController = router.get('applicationController');
          appController.connectOutlet(App.ProfileView);
        }
    }),

    one: function() {
      alert("eins");
    },
  }) 
});

Ответы на вопрос(3)

тояние / маршрут есть.

я верюhttps://github.com/emberjs/ember.js/issues/1015 поможет вам.

 Lux19 июн. 2012 г., 13:15
Благодарю. Эта ссылка полезна! Но как насчет View? Почему просмотр не является целью по умолчанию?jsfiddle.net/KvJ38/9

phane, чтобы отправить действие в другое место.

Если не указано, целью помощника действий является controller.target. Как вы заметили, это обычно устанавливается на маршрутизаторе.

Если у вас есть шаблон, в котором вы хотите, чтобы цель по умолчанию отличалась, вы можете сделать это, установив свойство target контроллера. Например, чтобы установить цель для самого контроллера:

App.MyController = Ember.Controller.extend({
  init: function(){
    this._super();
    this.set('target', this);
  };
});
 10 апр. 2016 г., 19:37
Также для всплывающей подсказки для обработки действий, в то время как последовательность говорит ... текущий контроллер, затем текущий маршрут и затем другие активные маршруты ... означает ли это, что для родителя только маршруты могут обрабатываться (а не controllers.ie родительские контроллеры)?
Решение Вопроса

но вы можете определить другое в шаблоне:

{{action two target="controller"}}

И добавьте «два» функция в "App.ProfileController".

UPDATE

Надеемся, что этот ответ был правильным в середине 2012 года. Теперь (сентябрь 2014 года) документация гласит:

By default, the {{action}} helper triggers a method on the template's controller. [...] If the controller does not implement a method with the same name as the action in its actions object, the action will be sent to the router, where the currently active leaf route will be given a chance to handle the action. [...] If neither the template's controller nor the currently active route implements a handler, the action will continue to bubble to any parent routes. Ultimately, if an ApplicationRoute is defined, it will have an opportunity to handle the action. When an action is triggered, but no matching action handler is implemented on the controller, the current route, or any of the current route's ancestors, an error will be thrown.

 Lux15 июн. 2012 г., 17:07
Благодарю. Вот рабочее решение:jsfiddle.net/KvJ38/4
 09 сент. 2014 г., 09:43
@ Bantic Вы правы. Ember.js сильно изменился с 2012 года, и мой ответ больше не верен. Обновлено сейчас. Спасибо!
 13 апр. 2014 г., 21:36
На самом деле целью действия по умолчанию является содержащий контроллер, а затем маршрутизатор. Вот пример jsbin, показывающий, что контроллер обрабатывает действие, когда оно определено как на контроллере, так и на маршруте:emberjs.jsbin.com/tupil/3/edit, А вот тёмные документы о действиях:emberjs.com/guides/templates/actions
 12 июл. 2014 г., 16:36
Из документов: "По умолчанию помощник {{action}} запускает метод на контроллере шаблона".emberjs.com/guides/templates/actions/#toc_action-bubbling

Ваш ответ на вопрос