我在移动设备上的应用程序出了点问题。我有这样的事情:
<a href="#!/kategori/hva-skjer" ng-click="toggleMenu()">
这是菜单中的链接之一。我想要的以及在dekstop上运行良好的方法是关闭菜单并从
href
属性重定向到正确的url。这将无法在移动设备上运行(也可以在chrome devtools的仿真器上运行)。它在切换菜单,但是没有重定向。
当我从应用程序引导文件中的依赖项中删除
ngTouch
模块时,该问题消失了。有人有类似的情况,知道已经解决了吗?还是ngTouch模块的错误?
演示版
在您的开发工具中启用触摸仿真并单击链接。如您所见,
toggle
函数在链接不起作用时起作用。http://plnkr.co/edit/1TldHkHvVfo4OmH7MLk4?p=preview
最佳答案
我不知道这是否仍然有用,因为问题已经存在了一年多,但是最近我碰到了完全相同的问题。似乎有一个有关ngTouch的已知错误。 (https://github.com/angular/angular.js/issues/5307)
适用于我的解决方案如下:
将ng-touch文件(angular-touch.js)的内容替换为您可以找到的here文件。 (对于某些人来说,此步骤可能不是必需的,但对我而言,是出于某种原因。)
然后进入文件并更改以下行:
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()函数,但是此解决方案可以帮您实现。