我在移动设备上的应用程序出现了问题。我有这样的事情:
<a href="#!/kategori/hva-skjer" ng-click="toggleMenu()">
这是菜单中的链接之一。我想要的以及在dekstop上运行良好的是关闭菜单并从href
属性重定向到正确的URL。
这不适用于移动设备(在chrome devtools上的模拟器上)。它切换菜单,但没有重定向。
当我从app bootstrap文件中的依赖项中删除ngTouch
模块时,问题就会消失。
有人有类似的情况,知道已经解决了吗?或者它是ngTouch模块的错误?
在您的开发工具中启用触摸模拟并单击链接。正如你可以看到toggle
函数在没有链接的情况下工作。
答案 0 :(得分:2)
我不知道这是否仍然有用,因为这个问题已经超过一年了,但我最近遇到了同样的问题。似乎有一个关于ngTouch的已知错误。 (https://github.com/angular/angular.js/issues/5307)
对我有用的解决方案如下:
使用您可以找到的文件here替换ng-touch文件(angular-touch.js)的内容。 (对于某些人来说,这个步骤可能不是必需的,但对我来说这是出于某种原因。)
然后进入文件并更改以下行:
ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
function($parse, $timeout, $rootElement) {
到:
ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement', '$location',
function($parse, $timeout, $rootElement, $location) {
然后找到这个部分:
if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
element.triggerHandler('click', [event]);
}
然后在它下方添加一个if:
if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
element.triggerHandler('click', [event]);
}
if the element has an href attribute, ensure that the url gets updated.
if (attr.href && angular.isString(attr.href)) {
$location.url(attr.href);
}
您也可以停止使用href并手动将href更改为location.go()函数,但此解决方案可以帮助您。
答案 1 :(得分:0)
这是一个旧的错误,在此之前没有修复。 Href和ng-click不能一起使用。
下面你看看你怎么能避免这个bug。