angular: anchor link 在 android 上不起作用,如果它的容器有 ng-click

angular: anchor link doesn't work on android if its container has ng-click

我有一个使用 Angular 的 PhoneGap 应用程序。

在应用程序中,我显示了一些内容,点击后应该会移动到另一个页面。但是,如果单击此内容中的 link,它们应该将用户带到他们的目标,而不是默认的内容点击目标。

但是,我注意到如果内容包装器具有 ng-click,则单击 link 不会将用户带到那个 link。它在我的 PC 上 Chrome 上完美运行,但在我的 Android 上运行不佳。即使 ng-click 属性为空也会发生这种情况,但如果它被省略则不会发生这种情况。

我用来重现的HTML是:

<div ng-click="">
    some content
    <a href="http://www.google.com">google</a>
    other content
</div>

正如我所说,在我的 PC 上,这工作正常,单击 link 会将浏览器带到 google.com,但在我的 Android phone 上,当我将上面的 HTML 放在我的 PhoneGap 应用程序中,当我单击 link 时没有任何反应。如果我从包含的 div 中删除 ng-click 属性,那么 link 在 phone.

上工作正常

知道为什么会发生这种情况,或者更重要的是,如何解决?

这是我找到的解决问题的干净解决方法。在包装器 ng-click 代码的开头,我添加了以下行:

if($event && $event.target && $event.target.href) {
    $event.target.click();
    $event.preventDefault();
    $event.stopPropagation();
    return;
}

ng-click 属性中,调用此代码时,我将 $event 作为参数传递。

此外,我不确定 $event.preventDefault();$event.stopPropagation(); 是否真的需要。即使没有它们,它在我的 android 上也能很好地工作,但为了额外的安全,我添加了它们。