我没有使用Ember Data(我不知道它是否解决了这个问题)。我有一个组件,然后单击该按钮将调用控制器内部定义的外部事件处理程序。我想知道sendAction
方法的返回状态。有关详细信息,请参见下图。
index
控制器btnPressed
actions obj 一旦我知道请求状态,我就可以在我的组件中执行相应的操作。
由于
答案 0 :(得分:2)
如果您使用旧的操作处理机制(使用sendAction()),则无法从操作返回值,您需要的是关闭操作。使用闭包操作,您可以直接在组件中调用控制器中定义的操作,并从中获取返回值。 以下是使用闭包操作的示例。
index.hbs
{{note-editor btnPressed=(action 'btnPressed')}}
在note-editor.hbs
中<button onclick={{action 'actionBtnPressed'}}>Save</button>
然后在note-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
答案 1 :(得分: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
是注入组件的服务。