2

我在移动设备上的应用程序出现问题。我有这样的事情:

<a href="#!/kategori/hva-skjer" ng-click="toggleMenu()">

这是菜单中的链接之一。我想要并且在 dekstop 上运行良好的是关闭菜单并从href属性重定向到正确的 url。

这不适用于移动设备(也在 chrome devtools 的模拟器上)。它正在切换菜单,但没有重定向。

当我ngTouch从应用程序引导文件中的依赖项中删除模块时,问题消失了。

有人有类似的情况并且已经知道解决方案吗?还是ngTouch模块的bug?

演示

在您的开发工具中启用触摸仿真并单击链接。正如您所看到toggle的,当链接不存在时,功能正常工作。

http://plnkr.co/edit/1TldHkHvVfo4OmH7MLk4?p=preview

4

2 回答 2

2

我不知道这是否仍然有帮助,因为这个问题已经存在一年多了,但我最近遇到了完全相同的问题。似乎有一个关于 ngTouch 的已知错误。(https://github.com/angular/angular.js/issues/5307

对我有用的解决方案如下:

将您的 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() 函数,但此解决方案会为您做到这一点。

于 2015-09-17T12:52:26.853 回答
0

这是一个老错误,在此之前没有修复。Href 和 ng-click 不能一起工作。

下面你会看到如何避免这个错误。

https://stackoverflow.com/a/34612541/4245233

于 2016-01-05T16:23:50.240 回答