Javascript 如何从组件中的sendAction方法获取返回状态

Javascript 如何从组件中的sendAction方法获取返回状态,javascript,ember.js,Javascript,Ember.js,我没有使用余烬数据(我不知道它是否解决了问题)。我有一个组件,单击该按钮将调用控制器中定义的外部事件处理程序。我想通过sendAction方法了解返回状态。详见下图 在文本区域中输入文本 单击“BTN保存” 在索引控制器中处理操作 在btnPressedactions对象中执行ajax请求 我的问题如何从步骤(4)通知组件返回状态 一旦知道请求状态,我就可以在组件中执行相应的操作 谢谢看完这篇文章 为了解决这个问题,我将控制器中的AJAX代码移动到组件中 actionBtnPresse

我没有使用余烬数据(我不知道它是否解决了问题)。我有一个组件,单击该按钮将调用控制器中定义的外部事件处理程序。我想通过
sendAction
方法了解返回状态。详见下图

  • 在文本区域中输入文本
  • 单击“BTN保存”
  • 索引
    控制器中处理操作
  • btnPressed
    actions对象中执行ajax请求
  • 我的问题如何从步骤(4)通知组件返回状态
  • 一旦知道请求状态,我就可以在组件中执行相应的操作

    谢谢

    看完这篇文章

    为了解决这个问题,我将控制器中的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
    是一种注入组件的服务。

    阅读文章后

    为了解决这个问题,我将控制器中的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
    是一种注入到组件中的服务。

    如果使用旧的操作处理机制(使用sendAction()),则无法获得操作的返回值,您需要的是关闭操作。使用闭包动作,您可以直接在组件中调用控制器中定义的动作,并从中获得返回值。 下面是使用闭包操作的示例

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

    <button onclick={{action 'actionBtnPressed'}}>Save</button>
    
    您可以在这里阅读更多有关闭包操作的信息。

    如果使用旧的操作处理机制(使用sendAction()),则无法获得操作的返回值,您需要的是闭包操作。使用闭包动作,您可以直接在组件中调用控制器中定义的动作,并从中获得返回值。 下面是使用闭包操作的示例

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

    <button onclick={{action 'actionBtnPressed'}}>Save</button>
    
    您可以在这里阅读更多有关闭包操作的信息。