2017-01-22 35 views
0

我沒有使用Ember Data(我不知道它是否解決了問題)。我有一個組件,然後單擊該按鈕將調用控制器內定義的外部事件處理程序。我想知道sendAction方法的返回狀態。詳情請參閱下圖。如何從組件中的sendAction方法獲取返回狀態

enter image description here

  1. 在textarea的
  2. 點擊 「BTN SAVE」
  3. 手柄行動index控制器輸入文字
  4. btnPressed行動OBJ
  5. 我的問題執行Ajax請求,如何通知組件從步驟(4)
  6. 01返回的狀態

一旦我知道請求狀態,我可以在組件中執行相應的動作。

感謝

回答

1

如果您使用舊的動作處理機制(使用sendAction()),則不能從動作返回值,您需要的是關閉動作。使用閉包動作,您可以直接在組件中調用控制器中定義的動作,並從中獲取返回值。 這裏是你的使用閉包動作的例子。

index.hbs 
{{note-editor btnPressed=(action 'btnPressed')}} 

在音符editor.hbs

<button onclick={{action 'actionBtnPressed'}}>Save</button> 

然後在記事editor.js內你可以叫btnPressed按鈕被點擊時。

actionBtnPressed() { 
    let val = this.btnPressed(); 
    // val is value returned from controller's btnPressed action 
} 

您可以在這裏閱讀關於關閉操作的更多信息。 https://github.com/emberjs/rfcs/blob/master/text/0050-improved-actions.md

0

閱讀後Correct way to make an ajax call from EmberJs component?

後,我的控制器內的AJAX代碼轉移到組件來解決這個問題。

actionBtnPressed() { 
     const card = { 
      front: this.get('cardFront'), 
      back: this.get('cardBack'), 
      tags: this.get('tags') 
     }; 

     if (this._validateCardFront()) { 
      this.get('ajax').createCard(card) 
       .done((data) => { 
        this._cleanInputs(); 
       }) 
       .fail((err) => { 
       }); 
     } 
    } 

ajax是注入組件的服務。

相關問題