簡體   English   中英

Ember.js(v2.4.5)組件沒有傳遞第二個動作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM