2015-01-15 2 views
0

나는 angularjs를 사용하는 응용 프로그램에서 작업하고 있습니다. 이 홈페이지 페이지로 이어지는 로그인 페이지가 있습니다. 로그인 페이지는 loginCtrl에 의해 관리되며, loginService을 더 사용합니다.angularjs 페이지 간의 데이터 전달

이 loginctrl입니다 (로그인 컨트롤러)

'use strict'; 
angular.module('dreamflow').controller('LoginCtrl', ['$scope', 'LoginService', 
function($scope, LoginService) { 
    $scope.title = "Login"; 
    $scope.master = {} 

    $scope.login = function() { 
     var user = { 
      username: $scope.username, 
      password: $scope.password 
     }; 
     LoginService(user); 
    }; 

} 
]); 

이 응답의 성공을 확인 후오고 위의 코드를 사용자의 세부 정보

angular.module('dreamflow') 
.factory('LoginService', function($http, $location, $rootScope) { 
    return function(user) { 
     $http.post('/login',{ 
       username: user.username, 
       password: user.password 
      }).then(function(response) { 
      if (response.data.success) { 
       console.log(response.data); 
       $rootScope.user = response.data.user; 
       $location.url('/'); 
      } else { 
       console.log(response.data.errorMessage); 
       $location.url('/'); 
      } 
     }); 
    }; 
}); 

loginService

이며, 우리는 집으로 리디렉션됩니다 페이지. 홈 페이지 각도 컨트롤러에서 $ rootScope.user에있는 사용자 세부 정보에 액세스하려고합니다.

+1

당신은 당신의 홈 페이지의 컨트롤러에서 LoginService을 가진하여 rootScope을 사용하지 않도록 할 수있다. 그런 다음 홈 페이지의 컨트롤러는 데이터가 들어올 때 response.data.user에 즉시 액세스 할 수 있습니다. – PenguinSource

+0

예, 시도했지만 사용자 데이터에 성공적으로 액세스 할 수 없습니다. 더 자세한 방법을 설명 할 수 있습니까? – ashishkumar148

+0

나는 또한 동일한 문제에 직면하고있다. 컨트롤러는 하나의 각진 모듈 앱에 없지만 두 개의 다른 앱에있다. – ritesh

답변

1

당신은 로그인 이름과 서비스를 보유 할 서비스를 할 수는 다음과 같은 두 컨트롤러에 주입됩니다

또한 jsfiddle with '$scope'

, 나는 '이'대신 '$ 범위'의 사용 것을 발견 같은 장소에서 컨트롤러를 두 개 이상 사용하는 경우 컨트롤러 범위를 서로 섞지 않는 데 도움이됩니다. 다른 이유가 있습니다.

HTML :

<div ng-app="myApp"> 

    <div ng-controller="ControllerOne as one"> 
     <h2>ControllerOne:</h2> 
     Change testService.loginName: <input type='text' ng-model='one.myService.loginName'/> </br></br> 
     myName: {{one.myService.loginName}} 
    </div> 
    <hr> 
    <div ng-controller="ControllerTwo as two"> 
     <h2>ControllerTwo:</h2> 
     myName: {{two.myService.loginName}} 
    </div> 

</div> 

JS는 :

app.service('testService', function(){ 
    this.loginName = "abcd"; 
}); 

app.controller('ControllerOne', function($scope, testService){ 
    this.myService = testService; 
}); 

app.controller('ControllerTwo', function($scope, testService){ 
    this.myService = testService; 
}); 

jsfiddle with 'this'

+0

컨트롤러가 하나의 앱에 없지만 두 개의 다른 앱에 걸쳐 있기 때문에 이는 작동하지 않습니다. – ritesh

+0

원래 질문에서 언급 한 두 가지 앱이 표시되지 않습니다. 단 2 별도의 부분, 각 컨트롤러 자체 @ritesh – PenguinSource

+0

올바른 ..하지만 this.loginName = "abcd"와 같은 하드 코드 된 데이터 대신 $ scope.username 서비스에서 읽고 그것을 전달합니다. – ritesh

관련 문제