2015-11-27 29 views
2

如果在移动设备中使用相同或重叠标签,但在桌面上完美工作,href和ng-click不会同时被调用。我的猜测是touch是什么打破了这一点。href和ng-click不能在移动设备上的相同标签中工作

例子:

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

- 或 -

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

两个href和NG-点击被称为桌面的意见,但只使用手机的触摸称为playSound()

我想达到的目标:我希望能够链接到下一页,并且还可以通过touch方式调用playSound()函数。目前,ng-click会覆盖href,并且我从不链接到下一页。

+1

你想达到什么样的? –

+1

@VaibhavShah我希望能够链接到下一页,并且还可以通过触摸方式调用playSound()函数。目前,ng-click会覆盖href,并且我从不链接到下一页。 –

+2

https://jsfiddle.net/wf8a3mvh/默认情况下工作 - 检查你是否在playSound()中执行e.preventDefault() – Qwal

回答

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'); 
+0

只要一点。我已经从url中删除了前导'#',因为它阻止了'$ location.path'的正常工作。 –

相关问题