2016-10-19 12 views
0

URLパスを返すために$ location.path()メソッドを使用して、ng-hideディレクティブにいくつかの条件文を書くことができます。私はその後、挿入

$scope.pathLocation = $location.path(); 

{{pathLocation}}私のhtmlでちょうどそれはそれは正しいパスを返したことを確認するために:私は私のコントローラで次のように作成しました。この問題は、別のビューをロードするときに発生します。 pathLocationは更新されません。新しいページビューでブラウザを手動でリフレッシュすると、そのページが表示されます。 `ここで

は、私のコードの簡略版である: コントローラー:

<html lang="en" ng-app="amApp"> 
    <body ng-controller="WelcomeController as welcome"> 
    <nav>menu's here to different views in SPA</nav> 
    {{pathLocation}} 
    <div ng-view></div> 
    </body> 
+0

どのように異なるビューを読み込みますか? '$ location.path(newpath)'を使うとうまくいくはずですが、ビューをロードするだけの他のメソッドを使用している場合は、ロケーションを設定する必要があります。 (ビューの読み込みが場所の変更と同じではありません) – infiniteRefactor

+0

値を1つの場所に割り当てるときに、なぜそれが魔法のように更新されると思われますか?あなたが '$ locationChangeSuccess'のイベントで' pathLocation'を割り当てたいと思うように聞こえます。 – Phil

答えて

1

私のコメントで述べたように、あなたのコードで何があなたのpathLocationプロパティを更新しない:

(function(){ 
    var amApp = angular.module('amApp', ['ngRoute', 'ngCookies','ngAnimate' ]); 

    amApp.controller('WelcomeController', ['$scope', '$location', function WelcomeController($scope, $location) { 
    $scope.pathLocation = $location.path(); 
    }]); 
})(); 

ここではHTMLです。

amApp.controller('WelcomeController', ['$scope', '$location', function WelcomeController($scope, $location) { 
    //$scope.pathLocation = $location.path(); 
    $scope.locationPathFn = $location.path; 
}]); 

が続いてHTML内の関数を実行します:スコープに機能を公開し、この

$scope.$on('$locationChangeSuccess', function() { 
    $scope.pathLocation = $location.path(); 
}); 
+0

それはありました、ありがとうございます。はい、アンカータグとng-hrefを使用して更新していたので、更新していませんでした。私はパスのメソッドが自動的にパスの変更で更新されたと言ったときにドキュメントを誤解していましたが、 – ADP

0

を追加してみてください$location.path()機能がチェックされますすべてのダイジェストサイクルに続いて

<html lang="en" ng-app="amApp"> 
    <body ng-controller="WelcomeController as welcome"> 
    <nav>menu's here to different views in SPA</nav> 
    {{locationPathFn()}} 
    <div ng-view></div> 
    </body> 

をし、ビューは最新の状態に保たれました。

関連する問題