EmberJS:Nothing handled the action

z9gpfhce  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(127)

我是Ember初学者,使用2.3.0。在现有的应用程序中,我需要添加一个按钮来切换屏幕上的内容。按照现有的代码模式,我添加了以下两个文件。

app/components/help.js

import Ember from 'ember';

export default Ember.Component.extend({
    actions: {
      toggleHelp() {
          this.toggleProperty('isShowingHelp');
      }
    }
});

templates/components/help.hbs

<div class="help">
    <a href="#" {{action "toggleHelp"}}>help</a>
</div>
{{#if this.isShowingHelp}}
  <p>HELPHELPHELP</p>
{{/if}}

然后在各种 *.hbs文件中添加{{partial "components/help"}},以使按钮显示在需要的位置。
按钮按预期呈现为

<div class="help">
    <a href="#" data-ember-action="493">help</a>
</div>

但是当我点击时,我得到了错误,“Nothing handed the action 'toggleHelp'。如果您确实处理了该操作,则该错误可能是由于从控制器中的操作处理程序返回true,从而导致操作冒泡。
我检查了Ember documentation,看到这符合说明。
我认为问题可能是因为我把它称为partial,但其他选项(viewrenderoutlet)似乎都不适用于我有限的情况。
按照this answer,我尝试了{{action "toggleHelp" target='component'}},但是当我点击的时候,错误变成了“ember.debug.js:29112 Uncaught TypeError:无法读取未定义的属性“send”。”
我错过了什么?

更新

如果我将toggleHelp和.hbs文件沿着复制到控制器中,那么链接可以正常工作。但是正确的方法肯定不是把它放在多个控制器文件中吧?(当我试图将toggleHelp放在controllers/application.js中时,希望它能覆盖所有地方(?!),我回到了原来的错误。)

9q78igpj

9q78igpj1#

你的问题确实是{{partial "components/help"}}
一般来说,你不应该使用偏句。要调用组件,请使用{{component-name}}
但是Ember 2.3中的组件需要在其名称中包含-。所以help * 无效!
将组件重命名为my-help。所以app/components/my-help.js用于你的js和templates/components/my-help.hbs。然后,您可以使用{{my-help}}来使用该组件。

相关问题