javascript - angularjs 确定我的事件中的 ng-click 和 href

标签 javascript html angularjs

md-list
  md-list-item.md-2-line ng-repeat="document in ctrl.documents"
    div.md-list-item-text ng-click="ctrl.getDocument($event, document)"
      span ng-bind-html="(document.content | trustedHtml)"

嗨,我的 MD 列表中有这个问题 ng-click命名getDocument这将出现一个包含文档的对话框。但在我的span有内容。包含像 href 这样的 html 标签。示例

<span> blah blah blah blah </span><a href="person/1" target=_blanl >

现在的问题是,当我单击链接时,它将进入新选项卡并打开对话框

如何确定用户是否单击 hrefthe md-list项目,因此将出现对话框

@getDocument = (ev, document) =>
  console.log ev

最佳答案

据我了解,链接在您的范围内呈现,但是当您单击它时,它会将您发送到另一个选项卡并仍然打开对话框。

您的链接仍然是propagating它的点击事件传递给父对象,因此您应该做的是将点击事件移动到另一个内部不包含链接的标签,或者向您的链接添加“event.stopPropagation”:

<a href="https://someurl" ng-click="$event.stopPropagation()">link</a>

这两者都可以。

编辑:为了更好的设计并避免意外事件传播等问题,也许您可​​以这样做:

md-list
  md-list-item.md-2-line ng-repeat="document in ctrl.documents"
    div.md-list-item-text
      button ng-click="ctrl.getDocument($event, document)"
      span ng-bind-html="(document.content | trustedHtml)"

或者,您还可以检查哪个元素触发了单击事件。例如,由于您的主要问题是链接,因此您可以在 getDocument() 函数中执行类似的操作:

ctrl.getDocument = function (event, document) {
  if (event.target.tagName === 'A') {
    return;
  }

  // your code
}

关于javascript - angularjs 确定我的事件中的 ng-click 和 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59241773/

相关文章:

html - 带有静态 html 的 gh-pages 存在时无法访问文件

html - IE 和 Chrome 中的边距百分比不同

javascript - ng-model 绑定(bind)不会更新同一对象上的另一个 ng-model

javascript - ng-style 未应用在 Angular ng-repeat

javascript - 用于协作代码编辑的 Ace Editor 和 meteor : Observe hangs app

变量中的javascript匿名函数

javascript - 如何使用不变的 URL 抓取多个页面 - Python 3

javascript - JQuery 在鼠标点击位置定位一个元素

javascript - react : Big Calendar Font Style

javascript - 单击 HTML 按钮后禁用该按钮的最快方法是什么?