AngularJS - 多次 ng-click - 事件冒泡

2024-01-19

在以下示例中:

  <li ng-repeat="item in items" ng-click="showItem(item)">
    <h3>{{item.title}}</h3>
    <button ng-click="remove(item)">Remove</button>
  </li>

当我点击按钮时showItem()也会由于事件冒泡而被调用。 我知道我可以使用$event观察$event.currentTarget and do $event.stopPropagation()等等,但这非常难看。

顺便提一句。我不想停止传播button(就我而言button is a twitter bootstrap dopdown/button- 这只是一个例子)

我该如何停止showItem()当我点击时被叫remove button?

EDIT丑陋的解决办法是:

function remove(item,$event){
  $event.originalEvent.prevent = true;
  // rest of the code
}

function showItem(item,$event){
  if($event.originalEvent.prevent)return;
  // rest of the code
}

这个解决方案对我有用(我只支持最新的浏览器,所以我尝试修改代码以使其更加兼容):

HTML:

<li ng-repeat="item in items" ng-click="showItem(item)">
    <h3>{{item.title}}</h3>
    <button ng-click="remove(item, $event)">Remove</button>
</li>

Scripts:

function remove(item, $event) {
    // do some code here

    // Prevent bubbling to showItem.
    // On recent browsers, only $event.stopPropagation() is needed
    if ($event.stopPropagation) $event.stopPropagation();
    if ($event.preventDefault) $event.preventDefault();
    $event.cancelBubble = true;
    $event.returnValue = false;
}
function showItem(item) {
    // code here
}

EDIT- 添加了 JSFiddle 演示来尝试一下http://jsfiddle.net/24e7mapp/1/ http://jsfiddle.net/24e7mapp/1/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS - 多次 ng-click - 事件冒泡 的相关文章

随机推荐

  • vim 从 .vimrc 运行时无法打开文件,但从终端运行时可以正常打开

    每当我尝试使用 Vim 打开任何文件时 我都会收到以下错误消息 Error detected while processing home emma vimrc line 138 E484 Can t open file home emma
  • 左倾红黑树的 F# 代码优化

    我一直致力于将 LLRBT 的 C 实现移植到 F 现在它可以正确运行 我的问题是我将如何优化它 我的一些想法 使用 Node 的可区分联合来删除 null 的使用 Remove getters and setters 你不能同时拥有 nu
  • 如何将加载的图像读取到 blob 中? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将图像对象转换为二进制 blob https stackoverflow com questions 13375333 how to convert an image object to a bi
  • Scala 中的理解评估很奇怪(?)

    现在 我花了a while找出为什么我的递归会以某种方式设法破坏堆栈 这是导致此问题的部分 scala gt for i lt List 1 2 3 j println why am I evaluated 10 if false yiel
  • Google App Engine 数据存储区和其他 NoSQL 数据库的无架构设计指南

    我相信许多其他人都有关系数据库背景 因此我正在寻找一些可靠的指南来在 Google App Engine 上设置 设计我的数据存储区 人们对于设置此类无模式数据存储有什么好的经验法则吗 我了解一些基础知识 例如非规范化 因为您无法进行连接
  • 静态库调试符号

    在 VS2010 中 有一个选项可以为 exe dll 生成调试信息linker但下没有这样的选项图书管理员对于库 调试信息是否嵌入静态库中 里面有一个选项C C 属性为程序数据库文件名对于库 exe 和 dll 默认情况下 它进入我的中间
  • 使用flutter打印包,如何从URL打印PDF?

    我在flutter中使用打印包 https pub dev packages printing https pub dev packages printing 该文档展示了如何从头开始创建 PDF 我已经在 URL 上有一个 PDF 有没有
  • os.environ 对 C 扩展模块的可见性

    如果我使用更改环境变量os environ 我之后导入的模块会看到这种变化吗 具体来说 sqlite3 requires https stackoverflow com a 23251896 336527使用环境变量来确定其临时文件位置 但
  • 当 URL 不正确时,curl_easy_perform 崩溃

    我在尝试使用下载文件时遇到问题libcurl 该程序使用多个线程 每个需要下载文件的线程都会创建一个libcurl处理来工作 当 URL 正确时 一切正常 但如果 URL 错误 程序就会崩溃 在调试模式下 如果 URL 不正确curl ea
  • 如何将弹出框 MATERIAL-UI 功能组件转换为基于类的组件?

    我正在尝试将此功能组件转换为基于类的组件 我已经尝试了几个小时但找不到放置这些的位置const组件中的变量 如果有人可以将其写在基于类的组件中 我们将不胜感激 const useStyles makeStyles theme gt typo
  • MIPS 汇编:从整数转换为十六进制

    我发现这个代码片段我认为可以将整数转换为十六进制 然而 我根本不遵循它 我添加了一些评论 说明了我认为正在发生的事情 但我不知道为什么要这样做 那么 假设我正确地注意到每行正在做什么 有人可以向我解释为什么要这样做吗 至于它如何以任何方式帮
  • 更新到 macos mavericks 后 gem install autotest-fsevent 失败

    更新到 Maveriks 后安装 gem 时遇到问题autotest fsevent 这是我得到的错误 Mellon public lasdolphin sudo gem install autotest fsevent Building
  • 是否有跨平台方法可以将资源嵌入到用 C++ 编写的二进制应用程序中? [复制]

    这个问题在这里已经有答案了 我试图将一些资源 图像 音乐和数据文件 捆绑到我的二进制应用程序 用 C 编写 中 我希望将所有内容都包含在一个可执行文件中 这样我就可以发送 大 可执行文件并且它可以工作 不能删除任何资产 我看到 Visual
  • .animate 回调函数之后的 .done

    我想在 animate 回调函数之后调用一个函数 我正在使用 done 方法来实现此目的 但它不起作用 fiddle http jsfiddle net dWAP4 function button click function div an
  • 向特定用户授予文件访问权限[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在Linux中 如何向特定人员授予文件 文件夹的访问权限 换句话说 假设我只想允许只有用户 fred 能够读取文件 那么我该怎么做呢 请注意 我了解
  • 密码验证C++

    嗨 这是我第一次使用课程 所以对我糟糕的解释表示歉意 基本上我正在为电梯程序制作密码功能 LogIn 是我的类的名称 其中包含字符串 john 它是密码 除了错误密码尝试的循环之外 一切似乎都工作正常 如果第一次密码尝试正确 则代码可以正常
  • 成员函数特征

    我正在编写一个模板类 它包装成员函数以减少一些调用 如果某些条件为真 则不需要调用成员函数 签名看起来像这样 template
  • heroku 上的数据库名称以及用户、密码和主机

    我想在heroku 上安装一个带有数据库的php 脚本 如何获取我安装的数据库的数据库名称 密码 用户和主机信息 Heroku 上有多种不同的数据库 您可以查看选项并将它们添加到您的应用程序中 addons heroku com https
  • 如何调试 grails 命令

    当我运行 dbm generate changelog 时 抛出异常 我想调试这个脚本 但我不知道该怎么做 我尝试在脚本文件中放置断点 DatabaseMigrationCommon groovy然后在 eclipse 中创建新的 debu
  • AngularJS - 多次 ng-click - 事件冒泡

    在以下示例中 li h3 item title h3 li