2016-11-17 2 views
0

У меня есть такой компонент:Emberjs 1.13.0-Call Действие Компонент

App.MyNiceComponent = Ember.component.extend({ 
    actions: { 
    save: function() { … } 
    } 
}); 

Шаблон для него:

<h1>My Nice Component</h1> 
{{ yield this }} 

Нигде в другом шаблоне:

{{#my-nice as |mn| }} 
    … 
    <a onclick={{ action 'save' }}>Save</save> 
{{/my-nice}} 

Щелкнув мышью на Link make Ember попытается вызвать действие в контроллере маршрутов. Я думаю, это потому, что версия, которую мы используем здесь, настолько старая, но есть ли способ заставить ember вызвать компоненты Action или просто передать ссылку на ссылку на ссылку, чтобы это вызвало?

В другом компоненте, который разработан, чтобы иметь некоторые дочерние компоненты, что я мог сделать это так:

App.AChildComponent = Ember.Component.extend({ 
    targetObject: Em.computed.alias('parentView'), 
    task: '', 
    action: 'onChildClick', //present as Action in the parent Compoent 

    click: function(){ 
    this.sendAction('action', this.get('task')); 
    } 
}) 

В HBS это будет выглядеть так:

{{#my-nice}} 
    {{#a-child task="do this"}} 
{{/my-nice}} 

В этом случай, который я действительно хотел бы сделать ember, запускать действия с compoents, без пути через контроллер ...

Заранее спасибо.

+0

Вы можете принять мой ответ? Это поможет другим – maheshiv

ответ

1

@philipp, вы можете использовать помощник действий, чтобы передать действие от компонента в любом месте (перейдите action "actionName" в качестве другого параметра в урожай). Например: - В вашем случае <h1>My Nice Component</h1> {{yield (action "save")}}

{{#my-nice as |saveAction| }} 
… 
<a onclick={{ action saveAction }}>Save</save> 
{{/my-nice}} 
Смежные вопросы