2016-03-04 154 views
0

我試圖根據用戶當前視圖隱藏/顯示div,但我遇到了一些問題。這是我的控制器:基於視圖隱藏/顯示元素

angular.module('myApp') 
    .controller('RouteCtrl', function ($scope, $location) { 

    $scope.currentPath = $location.path(); 
    console.log($location.path()); 

}); 

在我的index.html我有這樣的:

<span ng-controller="RouteCtrl"> 
    <div ng-view=""></div> 
    <div ng-include="'views/siderail.html'" ng-hide="currentPath === '/live'" ></div> 
</span> 

在我$routeProvider我有這樣的:

.when('/live', { 
    templateUrl: 'views/live.html', 
}) 

出於某種原因,這並未」 t似乎工作。我希望div在網站處於/ live路線時被隱藏,但似乎沒有辦法。如果我最初在負載上訪問/ live,它會起作用,但一旦路由發生變化,它就不會重新顯示div,反之亦然。幾乎就像它檢查一次,而不是像我想要的那樣改變每一個路線。

回答

0

你需要觀察的位置變化,因爲加載器,當你scope變量只被定義一次。

下面的代碼添加到您的控制器:

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

這將改變你的範圍變數每次位置變化。

0

包括在你的路線控制器:

.when('/live', { 
    controller: 'RouteCtrl', 
    templateUrl: 'views/live.html', 
}) 
+0

這仍然沒有做到這一點。它在我在頁面加載時訪問/ live路線時有效,但是如果我返回到主路線,它根本不會顯示div。它檢查初始負載,但不是每次查看都改變。那有意義嗎?我會更新這個問題。 –

+0

嘗試在您的頁面上顯示「{{currentPath}}」,並在您更改頁面時查看它所說的內容。 –