未选中ember可组合帮助程序复选框

epfja78i  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(104)

我在Ember中使用了可组合的助手。当我点击父复选框时,所有子复选框都会选中和取消选中,但父复选框从不显示复选标记。我在这里遗漏了什么?
父项:<input type="checkbox" checked={{allSelected}} {{action (toggle "allSelected" this)}}>
子项:<input type="checkbox" checked={{allSelected}}>

pftdvrlh

pftdvrlh1#

{{action}}助手can not prevent the click action from bubbling up当使用这种风格(通过提供一个函数来关闭)。我可以想到一些方法来解决这个问题,在旧的ember版本。(与ember辛烷你只需要使用{{on}}助手,它不会遭受同样的限制)。
1.在组件的支持JS中的操作中执行切换,并传递{{action "toggle"}}以停止事件的冒泡。
1.使用{{if}}拆分输入。

{{if this.allSelected}}
  <input checked>
{{else}}
  <input>
{{/if}}
  • 旧的错误答案:*

我不是100%确定这里发生了什么(可能是浏览器重复应用了你的点击)。我想切换到一个更新的ember操作处理语法可能会解决这个问题。

<input type="checkbox" checked={{this.allSelected}} {{on "click" (toggle "allSelected" this)}}>

或者在旧版本的ember上(在{{on}}引入之前)

<input type="checkbox" checked={{this.allSelected}} {{action (toggle "allSelected" this) on="click"}}>

如果这不起作用,您可能希望给予内置的输入组件,因为它可以消除事件的一些粗糙边缘。

相关问题