EmberJS:什么也没处理

时间:2019-01-29 19:18:16

标签: ember.js

灰烬新手。使用2.3.0。对于现有的应用程序,我需要添加一个在屏幕上和屏幕外切换内容的按钮。按照现有的代码模式,我添加了以下两个文件。

app / components / help.js

import Ember from 'ember';

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

模板/组件/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>

但是,当我单击时,出现错误,“没有任何操作处理'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中时,希望可以覆盖所有地方(?!),我回到了原来的错误。)

1 个答案:

答案 0 :(得分:1)

您的问题确实是{{partial "components/help"}}

通常,您不应该使用局部变量。要调用组件,请使用{{component-name}}

不过,Ember 2.3中的组件名称必须带有-。因此help无效有效!

将您的组件重命名为my-help。因此,app/components/my-help.js用于您的js,templates/components/my-help.hbs。然后,您只需执行{{my-help}}即可使用该组件。