在我的angularjs應用程序中,我爲每個頁面呈現「導航欄」div。
用戶登錄並重定向到詳細信息頁面後,我希望我正在更新$範圍,這不會反映到視圖中。
爲了反映$ scope的變化,我使用$ scope。$ apply()調用$ digest。似乎沒有更新和$範圍更新仍然沒有反映在我看來。
我的代碼看起來像下面:
CONTROLLER:
function NavCtrl($scope){
//as isAuth false
$scope.showLogin = true;
$scope.showLogout = false;
}
function ProductDetails($scope){
//as isAuth true
$scope.showLogin = false;
$scope.showLogout = true;
if (!$scope.$$phase) {
//$digest or $apply to reflect update of scope update
$scope.$apply();
}
}
VIEW:
<div id="navigation-bar" ng-controller="NavCtrl">
<li ng-show="showLogin"><a href="/login">Login</a></li>
<li ng-show="showLogout"><a href="/logout">Logout</a></li>
</div>
我做錯了嗎?我錯過了任何觀點嗎?順便說一句,我經歷了其他問題,如AngularJS $scope updates not reflected in the view,但它並沒有幫助我的情況。
我在設置$ scope.connected = true;在我的「ProductDetails」控制器中?這可以嗎?在我看來,它仍然沒有反映出來。 – arnold
否,因爲它不在相同的範圍內。您可以在NavCtrl中使用$ rootScope.connected並更改任何控制器中的值。這樣,您將使用根作用域。我改變了我的答案,告訴你如何。 –