【问题标题】:How to stop the inner action from bubbling to the outer link-to helper?如何阻止内部动作冒泡到外部链接助手?
【发布时间】:2016-05-11 11:48:11
【问题描述】:

点击“编辑”触发动作“编辑”时:

  {{#link-to "pages.show" page class="list-group-item"}}
    {{page.name}}
    <span class="badge" {{action "edit" page preventDefault=false}}>edit</span>
  {{/link-to}}

然后触发动作(例如打开编辑页面),但在下一秒链接到重定向完成,所以我最终在“pages.show”路线上。

预期:只有“编辑”动作被调用,点击事件(?)没有“冒泡”到链接帮助器。

旁注使用的是 Ember 2.2,上面的模板是组件的一部分。

PS:我认为在操作中使用 preventDefault=false 会阻止这种类型的行为 - 但显然链接到帮助器从其他地方获取信息。

【问题讨论】:

  • 您似乎在滥用link-to。你能扩展你的用例吗?

标签: ember.js ember-cli htmlbars


【解决方案1】:

你需要的是event bubbling。您可以在 action 助手中使用 bubbles=false 禁用它,这样您的点击事件就不会冒泡到 link-to 元素

{{#link-to "pages.show" page class="list-group-item"}}
  {{page.name}}
  <span class="badge" {{action "edit" page bubbles=false}}>edit</span>
{{/link-to}}

http://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_event-propagation

preventDefault 是另一回事,当设置preventDefault 为false 时,您允许DOM 事件的默认浏览器操作。

【讨论】:

  • 我相信link-to 仍然会使用您的解决方案触发点击处理程序,因为冒泡的是 DOM 点击事件。
  • 谢谢老兄。尽管@locks donts 在动作助手上使用了 bubbles=false (在 chrome 中)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 2019-06-19
  • 2015-02-28
  • 2021-11-11
  • 2023-03-31
相关资源
最近更新 更多