2016-04-22 7 views
0

私はangularjs v1.4.8を使用しています。この中で、私は、URLバインディングに関する問題に会いました。私は画像クリックイベントによってプログラム的にトリガされたファイルアップローダを使用します。これを行うと、ブラウザからURLが削除されます。これは私のアプリケーションで見ることができる結果です。クリックする前にルーティングURLが空の文字列になる

http://localhost:49573/req/request.html#/req/upload

クリック後:http://localhost:49573/req/request.html#

コントローラ

 $scope.triggerupload = function() {   //ls_val 
      alert($location.path()); 
     }; 
内のHTMLコード

<img src="images/upload.png" title="Upload" ng-click="triggerupload()"> 

機能

このリターン/ REQ/

App.runをアップロード

$rootScope.$on('$locationChangeStart', function (event, next, current) { 
      console.log($location.path()); 
    }); 

これは

+0

はあなたがngRouterやuiRouterを使用している( '$状態に')?あなたはタグui-routerを追加しているので、それを使用していないようです。 – Walfrat

+0

'$ locationChangeStart'時計からロケーションをロギングする際の注意として、' $ locationChangeStart'イベントの '.oldUrl'と' .newUrl'フィールドを使うべきです。 – Aaron

答えて

0

あなたのクリックイベントが最も可能性の高い外に伝播され、空の文字列を返します。スコープは場所を変更するために進むので、$locationChangeStartを発信します。

あなたのtriggerupload機能からのイベントの伝播を停止しようとする必要があります

$scope.triggerupload = function (event) { 
    //do the upload 
    event.stopPropagation(); 
}; 

、または直接ng-clickディレクティブで:

<img ng-click="triggerupload(); $event.stopPropagation();" src="images/upload.png" title="Upload"> 
+0

このstopPropagation()はうまくやっていません。それでも同じように動作します。どのようにイベントが外側のスコープに伝播するのですか。私はその中で単純な警告だけを使用します。 –

+0

イメージをクリックすると、クリックイベントが生成されます。画像のng-clickによって最初に傍受されますが、伝播を止めなければ画像のコンテナと$ rootscopeまでバブルします – Aaron

関連する問題