2015-09-25 5 views
0

Ember 2.0 действительно дает мне трудное время для понимания новой функциональности. Я хочу вызвать метод в контроллере из функции действия, но, похоже, не нашел способ. Потрачено некоторое время на это ужеВызов метода контроллера из действия контроллера в Ember 2.0

Я прочитал: calling method from action of controller in emberjs, но он работает только для Ember 1.x, как в Ember 2.0, ArrayController больше нет, и я не могу использовать this.send().

В основном то, что мне нужно это:

App.SomeController = Ember.Controller.extend({ 
    methodFunction: function(data) { 
     console.log("YEY", data); 
    } 
    actions: { 
     sessionAction: function(data) { 
      this.methodFunction(data); 
     } 
    } 
}); 

Проблема заключается в том, что this.methodFunction не доступна

+1

[Проверьте это jsbin] (http://emberjs.jsbin.com/puyufebeqo/2/edit?html,js,console,output), ваш пример Absolutly работает! – Lux

ответ

1

кода вы предоставили в вопросе об ошибке:

SyntaxError: controllerName.js: unknown: Unexpected token (7:3)(…)

Вы отсутствует , после methodFunction декларация. Fix:

App.SomeController = Ember.Controller.extend({ 
    methodFunction: function(data) { 
     console.log("YEY", data); 
    }, 
    actions: { 
     sessionAction: function(data) { 
      this.methodFunction(data); 
     } 
    } 
}); 

Для шаблона:

<button {{action 'sessionAction' 'Example data'}}>Send session action</button> 

Он регистрирует правильно:

YEY Example data

Кстати, вы также можете воспользоваться синтаксисом ES2015:

export default Ember.Controller.extend({ 
    methodFunction(data) { 
     console.log("YEY", data); 
    }, 
    actions: { 
     sessionAction(data) { 
      this.methodFunction(data); 
     } 
    } 
}); 
+1

Спасибо за всесторонний ответ. Это действительно работает. В моем случае вызов действительно поступал из объекта 'window' таким образом,' this' указывал на окно, а не на ember object –