【发布时间】:2019-06-23 00:05:30
【问题描述】:
Ember 新手。使用 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,但其他选项(view、render、outlet)似乎都不适用于我的有限情况。
根据this answer,我尝试了{{action "toggleHelp" target='component'}},但是当我单击时出现错误,“ember.debug.js:29112 Uncaught TypeError: Cannot read property 'send' of undefined.”
我完全不知所措...谁能指出我在这里遗漏了什么?谢谢!
更新:
如果我将toggleHelp 与其中一个 .hbs 文件一起复制到控制器中,则链接可以正常工作。但肯定正确的方法不能是把它放在多个控制器文件中吗? (当我尝试将 toggleHelp 放入 controllers/application.js 中时,希望它能覆盖所有地方(?!),我又回到了原来的错误。)
【问题讨论】:
标签: ember.js