2

モバイル デバイスのアプリケーションで問題が発生します。私はこのようなものを持っています:

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

これは、メニュー内のリンクの 1 つです。私が欲しいのは、dekstopでうまく機能するのは、メニューを閉じて、href属性から適切なURLにリダイレクトすることです。

これはモバイル デバイスでは機能しません (Chrome devtools のエミュレーターでも)。メニューを切り替えていますが、リダイレクトはありません。

アプリのブートストラップ ファイルの依存関係からモジュールを削除するngTouchと、問題はなくなります。

誰かが同様の状況にあり、すでに解決策を知っていますか? それともngTouchモジュールのバグですか?

デモ

開発ツールでタッチ エミュレーションを有効にし、リンクをクリックします。ご覧のとおりtoggle、リンクが機能していないときに関数が機能しています。

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

4

2 に答える 2

2

質問が1年以上前のものであるため、これがまだ役立つかどうかはわかりませんが、最近まったく同じ問題に遭遇しました. 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 の使用をやめて、手動で hrefs を location.go() 関数に変更することもできますが、このソリューションはそれを行います。

于 2015-09-17T12:52:26.853 に答える
0

これは古いバグで、今回まで修正されていませんでした。href と ng-click は連携しません。

以下に、このバグを回避する方法を示します。

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

于 2016-01-05T16:23:50.240 に答える