2017-01-22 36 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是注入组件的服务。

相关问题