لا يتم تحديث متغيرات النطاق في شريط التنقل خارج ng-view في AngularJS

I'm having a hard time trying to make a dynamically navbar in AngularJS.My scope variable I use to check whether a user is logged in or not is not changing in navbar, however it's value is changing in console or inside the ng-view. Here is my index.html navbar

 

Variable logat is used to store the value whether a user is logged in or not.Here is my controllerlogin file

var myApp = angular.module('myApp');

 myApp.controller('controllerlogin', 
 ['$scope','$http','$location','$routeParams','$rootScope',
function($scope,$http ,$location,$routeParams,$rootScope){
$scope.Login = function(){
$http.post('/api/login',$scope.userr).then(succesCallback,errorCallback);
function succesCallback(response){  
        console.log(response.data);
    $rootScope.loggedin = response.data;
    if($rootScope.loggedin.validity == "0")
    {
        $rootScope.logat = true;
        window.location.href = '#!/'

    }if($rootScope.loggedin.validity == "1"){
        $rootScope.logat = false;
        window.location.href = '#!/login'
    }
    if($rootScope.loggedin.validity == "2"){
        $rootScope.logat = false;
        window.location.href = '#!/login'
    }
}
function errorCallback(error){
    throw error;
}
} 

}])؛

The variable validity is used to check if a log in is successful or not(based on response from server).
And a part of code from my app.js file.

var myApp = angular.module('myApp',['ngRoute']);
myApp.config(function($routeProvider){
$routeProvider.when('/',{
    controller:'controllertipproduse',
    templateUrl: 'views/Default.html'
})
.when('/produse',{
    controller:'controllerproduse',
    templateUrl: 'views/Produse.html'
})
.when('/login',{
    controller:'controllerlogin',
    templateUrl: 'views/Login.html'
})
0
حسناً ، أنا لن أستخدمها بعد الآن ، لم أستخدمها في المحاولة الأولى ولكن بعد أن قمت بكل شيء تقريباً قرأت للتحقق مما إذا كان يعمل
وأضاف المؤلف Gabriel Costin, مصدر
لا تستخدم ng-controller في nav
وأضاف المؤلف Shridhar Sharma, مصدر

2 إجابة

حاول استخدام نطاق $ بدلاً من $ rootScope.

عادة ليس من المستحسن استخدام $ rootScope لربط المتغيرات الزاويّة.

0
وأضاف
في البداية حاول استخدام نطاق $ (ولم يكن يعمل) ثم قرأت أنه من الأفضل استخدام $ rootScope لأنه يمكن رؤيته من أي وحدة تحكم.
وأضاف المؤلف Gabriel Costin, مصدر

هذا يجب أن يعمل

   {{$root.logat}}
0
وأضاف
نعم هذا يعمل ، شكرا لك!
وأضاف المؤلف Gabriel Costin, مصدر