[英]Ember.js (v2.4.5) component isn't passing up second action
我有一個非常簡單的組件,它有兩個動作,即開始和停止。 單擊按鈕時將觸發它們。 第一個動作冒泡到路線並按預期工作,但是第二個動作在組件中觸發,但從未到達路線。
我剛剛開始玩Ember,但是我想組件可以執行多個動作?
控制台中沒有錯誤,按鈕只是不執行任何操作,並且從路由中不會顯示控制台日志。
組件動作
actions: {
start() {
console.log('component start called');
this.sendAction('start', this.get('item'));
},
stop() {
console.log('component stop called');
this.sendAction('stop', this.get('item'));
}
}
路線動作
actions: {
start (server) {
console.log('route start called');
server.set("settings.amazonTask", 'start');
server.save();
},
stop (server) {
console.log('route stop called');
server.set('settings.amazonTask', 'stop');
server.save();
}
}
模板
<button type="button"
class="btn btn-default btn-sm" {{action "start"}}>
Turn on
</button>
<button type="button"
class="btn btn-default btn-sm" {{action "stop"}}>
Turn off
</button>
您必須將操作歸結為組件:
{{my-component start=(action 'start') stop=(action 'stop')}}
然后,您可以使用sendAction
進行調用。
但是我強烈建議使用新語法並直接訪問attrs
對象上的操作。 這更加清楚,可以清楚地了解發生了什么:
this.attrs['start'](this.get('item'))
實際上, action
助手只是從actions
對象中獲取一個動作並將其綁定到當前上下文。 可以將結果傳遞給組件,然后在執行action
幫助器的上下文中從該組件調用該結果。
請注意,在已創建的動作上調用action
助手將不會反彈動作,而只是通過它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.