【发布时间】:2020-06-23 07:16:20
【问题描述】:
我们最近从 ember 2+ 转移到了 Ember 3.18.0,我正在努力从组件中调用控制器函数。在以前的版本中,我们使用 sendAction 来冒泡动作,但现在由于 sendAction 已被贬值并且正在使用闭包,我无法正确实现它。
下面是我的代码
Controller.hbs
{{generic-err-modal err=receivedErr showDialog= this.showErrorModal onSave=(action "closePromptDialog")}}
Controller.js
@action
closePromptDialog(){
this.set("showErrorModal",false);
}
组件.hbs
{{#if @showDialog}}
<PaperDialog id="genericModal" class="flex-50" @fullscreen={{fullscreen}} @onClose={{action "closePromptDialog"}} @origin={{dialogOrigin}}>
<PaperDialogContent class="text-align-center">
{{paper-icon "remove_circle_outline" class="red" size=48}}
</PaperDialogContent>
<PaperDialogContent>
<h2>{{@err.errorMessage}}</h2>
</PaperDialogContent>
<PaperDialogActions @class="layout-row">
<span class="flex"></span>
<PaperButton @primary={{true}} @onClick={{action "hideModal"}} @raised={{true}}>Ok</PaperButton>
</PaperDialogActions>
</PaperDialog>
{{/if}}
组件.js
@action
hideModal(){
this.args.onSave();
}
在这个问题上我得到了错误
Uncaught TypeError: method is not a function
任何帮助将不胜感激。
我使用的 Ember 版本是 3.18.0
【问题讨论】:
标签: ember.js controller components closures