2017-02-10 3 views
0

저는 AngularJS 커뮤니티에 처음 왔고 누군가 다음 호에 도움을주기를 희망했습니다.

불완전한 튜토리얼을 기반으로 한 가벼운 CMS 시스템을 만들고 일부 작품을 직접 채웠지 만 $ 범위가 변경되면 HTML 부분을 업데이트 할 수 없습니다.

HTML 부분 (관리자-login.html)

<div ng-if="loggedInUser"> 
Welcome {{loggedInUser}} | <a href="admin/pages">My Admin</a> | <a href="admin/logout">Logout</a> 
</div> 

내 지침 (directives.js)

directive('adminLogin', [ 
    function() { 
    return { 
     controller: function($scope, $cookies) { 
     var user = $cookies.get('loggedInUser', {path: "/"}); 
     $scope.loggedInUser = user; 
     }, 
     templateUrl: 'partials/directives/admin-login.html' 
    }; 
    } 
]) 

내 컨트롤러 (controllers.js)

controller('AdminLoginCtrl', ['$scope', '$location', '$cookies', 'AuthService','$log','flashMessageService', 
    function($scope, $location, $cookies, AuthService, $log, flashMessageService) { 
     $scope.credentials = { 
     username: '', 
     password: '' 
     }; 
     $scope.login = function(credentials) { 
     AuthService.login(credentials).then(
      function(res, err) { 
      $cookies.put('loggedInUser', res.data); 
      $location.path('/admin/pages'); 
      }, 
      function(err) { 
      flashMessageService.setMessage(err.data); 

      $log.log(err); 
      }); 
     }; 
    } 
]) 

범위 업데이트하지만 admin-login.html을 표시하거나 숨기려면 페이지를 새로 고쳐야합니다.

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

답변

0

$scope.loggedInUser은 쿠키를 업데이트하면 업데이트되지 않으므로 지시어의 쿠키 변경을 감시하고 $scope을 수동으로 업데이트해야합니다.

directive('adminLogin', [ 
    function() { 
    return { 
     controller: function($scope, $cookies) { 
     $scope.$watch(function() { 
      return $cookies.get('loggedInUser', {path: "/"}); 
     }, function (value) { 
      $scope.loggedInUser = value; 
     }); 
     }, 
     templateUrl: 'partials/directives/admin-login.html' 
    }; 
    } 
]) 
+0

당신이 어떻게 알고있을 때, 당신은 너무 간단 너무 감사합니다 - 당신이 학습을 시작할 때 예, 각도가 꽤 복잡 다시 – Thornierrat87

+0

감사합니다, 계속 당신은 그것이 얼마나 즐거운 보자! – TheSameSon