2017-09-12 17 views
0

ルートのリロードは、ルートが変更されていない場合のみ実行します。つまり、ルートにかかるボタンがクリックされたときにコントローラをリロードします。ルートに変更がないのでrouteが変更されていない場合のイベントを発生するanglejs

this.reload = function() { 
    $scope.$on('$routeChangeStart', function(event, next, current) { 
    if($route.current == $route.next) { 
     $route.reload(); 
    } 
    }) 
} 

条件内のコードがトリガされることはありません:NG-クリックディレクティブで私の見解では、私は次のメソッドを呼び出します。私はangularJSの初心者ですので、どんな助けもありがとうございます:)

答えて

0

上記の2つのことを別々に扱います。

  1. それぞれのルート変更で、何をしたいかを行います。

routeChangeStartをリッスンするイベントリスナーを登録します。

$rootScope.$on('$routeChangeStart', function (event, next, prev) { 
    //if logic given what you want to do with the next/prev objects 
}); 
  • ユーザがボタンルートをリロードクリックします。
  • HTML

    <button ng-click="reload_route()">reload</button> 
    

    また、あなたの上記の例では$ routeChangeStart関数はコールバックを実行し、次のイベントを渡され、前のオブジェクト

    app.controller('myCtrl', function($scope, $route){ 
        $scope.reload_route = function(){ 
         //once again add if logic in here if needed 
         $route.reload(); 
        } 
        }) 
    

    コントローラ。 $ route.currentや$ route.nextではなく、if文でこれらの引数を使用する必要があります。

    関連する問題