2015-09-23 4 views
2

Теперь, когда Ember 2.0 решил полностью удалить Ember.View, у меня возникли проблемы с передачей действий из представления в контроллер.Вызов действия контроллера из компонента Ember 2.0

App.SomeView = Ember.Component.extend({ 
    didInsertElement : function(){ 
    var _this = this; 
    window.addEventListener("message", 
     function(event) { 
      _this.get("controller").send("foobar", event.data); 
     }, false); 
    } 
}); 

App.SomeController = Ember.Controller.extend({ 
    actions: { 
     foobar: function(param) { 
     console.log("Yey", param); 
     } 
    } 
}); 

Потому что вместо Ember.View мне нужно использовать Ember.Component. И, конечно же, this.get («controller»). Метод отправки больше не работает. Есть ли какое-то обходное решение для этого?

ответ

6

Вы можете использовать sendAction() в компоненте и назначить ему обработчик в шаблоне.

// some-component.js 
this.sendAction('actionName', params); 

// template 
{{some-component actionName="foobar"}} 

// controller 
actions: { 
    foobar(params) { 
    alert('action received'); 
    } 
} 

Детали: http://guides.emberjs.com/v2.0.0/components/sending-actions-from-components-to-your-application/

+1

Да, и просто добавить к этому, это было примерно с первых дней 1.x, так что это общая закономерность. – Kingpin2k

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