Ответ 1
Способ работы Ember.Component должен быть агностическим для других частей вашего приложения, поэтому вместо этого передайте контроллер, на который вы хотите вызвать действие, когда что-то происходит в вашем компоненте, вы делаете это больше как в следующим образом:
{{#affi-modal-box
title="Test title"
modalId="createNewAnalyticsRunModal"
action="actionNameOnTheController"}}some message{{/affi-modal-box}}
Как вы видите, вы устанавливаете атрибут action
для имени действия на вашем контроллере, а затем внутри своего компонента вы просто вызываете this.sendAction('action');
, который будет вызывать любое имя действия, которое вы определили ранее:
AS.AffiModalBoxComponent = Ember.Component.extend({
attributeBindings: ['modelId','test'],
//this is the function that gets called when save button is clicked
onSaveButtonClick : function(){
this.sendAction('action');
}
});
Итак, всякий раз, когда вызывается onSaveButtonClick
, он отправляет действие actionNameOnTheController
тому, кто его прослушивает. И лучше всего, ничего не зная о контроллере. Это та функциональность, которая делает Ember.Component многократно используемым.
См. здесь простую демонстрацию объясняемой концепции.
Надеюсь, что это поможет.