2013-12-12 7 views
0

사용자를 인증하기 위해 공장에서 리소스를 사용하고 있습니다. 내 컨트롤러에 $scope.user = User.user을 설정하고 user.username을 출력합니다. 이 모든 것은 챔피언처럼 작동하지만 페이지를 새로 고칠 때까지는 사용자 이름이 표시되지 않습니다.Scope 속성이 페이지 새로 고침까지 업데이트되지 않습니다.

HTML

app.controller('MainCtrl', ['$scope', '$location', 'User', 
function ($scope, $location, User) { 
    $scope.user = User.user; 

    $scope.login = function(username, password) { 
     User.login({username:username, password:password}, 
     function(user) { 
      $scope.user = user; 
      $location.path('/'); 
     }); 
    } 
}]); 

공장

app.factory('User', ['$resource', '$location', function($resource, $location) { 
    var currentUser = {}; 
    return { 
     login: function(user, success, error) { 
      $resource('/login').save(
       user, 
       function(resp) { 
        user.isLoggedin = true; 
        currentUser = user; 
        success(user); 
       }, 
       function(resp) { 
        alert(resp.data.message.text); 
        error(user); 
       } 
      ); 
     }, 
     user: currentUser 
    } 
}]); 

답변

0

이 그것을 알아 냈

<div ng-app="app"> 
    <div ng-controller="MainCtrl"> 
     {{ user.username }} 
    </div> 
</div> 

컨트롤러 :

여기에 간단하게 내 코드입니다. 기본적으로 공장에서 범위를 변경하려고했습니다.

공장 : : 이제 돼있 뷰 업데이트처럼

arc.factory('User', ['$resource', function($resource) { 
    return $resource('/users/:op/:id.json', {}, { 
     login: { method:'POST', params:{ op:'login' } }, 
     logout: { method:'GET', params:{ op:'logout' } }, 
     getCurrentUser: { method:'GET', params:{ op:'getCurrentUser' } } 
    }); 
}]); 

컨트롤러

arc.controller('MainCtrl', ['$scope', '$location', 'User', 
    function ($scope, $location, User) { 
     $scope.user = User.getCurrentUser(); 

     $scope.logout = function() { 
      User.logout(
       function(response) { 
        $scope.user = response.user; 
        $location.path('/login'); 
       } 
      ); 
     } 
     $scope.login = function(username, password) { 
      User.login({username:username, password:password}, 
      function(response) { 
       $scope.user = response.user; 
       $location.path('/'); 
      }); 
     } 
    }]); 

여기 작업 코드입니다.

{{ user.name }} 
관련 문제