href和ng-click在Mobile上的同一标签中不起作用

时间:2015-11-27 16:37:32

标签: javascript angularjs href angularjs-ng-click

如果在移动设备中使用相同或重叠的标签但在桌面上完美运行,则不会同时调用

href和ng-click。我的猜测是touch正在打破这个。

示例:

<a href="/" ng-click="playSound()"> link </a>

-OR -

<div ng-click="playSound()">
  <a href="/"> link </a>
</div>

href和ng-click都在桌面视图中调用,但仅使用移动设备触摸调用playSound()

我想要实现的目标:我希望能够链接到下一页并在触摸时调用playSound()函数。目前,ng-click在触摸时覆盖href,我从未链接到下一页。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并找到了答案here

简而言之,您可以拥有多个具有相同名称的指令,并且两个指令在调用时都会运行。这允许您编写一个自定义指令,也称为ng-click,它需要的工作量少于遍历所有链接并将重定向移动到ng-click调用的函数。

以下是代码:

angular.module('ngClick', function( $location ) {
  return {
    link: function(scope, elem, attrs) {
      if(attrs.href) {
        elem.on('touchend', function() {
          $location.path(attrs.href);        
        });
      }
    },
    priority: 1
  };
});

对我来说,将重定向移动到我的函数并使用$location重定向页面非常简单:

$location.path('www.my-link.com');