2014-10-08 6 views
1

AngularJS를 처음 사용하여 한 모듈의 한 컨트롤러에서 다른 모듈의 다른 컨트롤러로 동적 값 (사용자 이름)을 전달하고 싶습니다. 라우팅 및 기타 작업이 정상적으로 작동합니다. 이 내 코드한 모듈 컨트롤러에서 다른 모듈 컨트롤러로 동적 데이터를 전달하는 방법

loginModule.js

(function() { 

     var app = angular.module("waleteros", ["ngRoute","ui.bootstrap","ngCookies"]); 

     app.config(function($routeProvider) { 
      $routeProvider 
      .when("/",{ 
       templateUrl:"views/login.html", 
       controller:"LoginCtrl" 
      }) 
     } 
    }) 

app.js

(function() { 

     var app = angular.module("waleterosAdmin", ["ngRoute","ngGrid","ui.bootstrap","ngCookies"]); 

     app.config(function($routeProvider) { 
     $routeProvider 
      .when("/home",{ 
       templateUrl:"homepage.html", 
       controller:"HomeCtrl" 
      }) 
     } 
    }) 

loginCtrl.js

(function(){ 

     var app = angular.module("waleteros"); 

     var LoginCtrl= function($scope,$location) 
     { 
      $scope.signIn=function(email,pin) 
      { 
       //Some authentication code... 
       //Here i want to pass the username to homectrl.js 
       window.location.href="views/home.html" 
      } 
     } 
     app.controller("LoginCtrl", LoginCtrl); 
    }) 

HomeCtrl.js입니다

(function(){ 

     var app = angular.module("waleterosAdmin"); 

     var HomeCtrl=function($scope) 
     { 
      //Here i want to get the username 
     } 

     app.controller("HomeCtrl", HomeCtrl); 
    }) 

답변

0

당신은 데이터를 유지하기 위해 서비스를 사용하는 것이 다음 서비스를 당신의 컨트롤러에 주입 :

app.service("SharedProperties", function() { 
    var _userName = null; 

    return { 
     getUser: function() { 
      return _userName 
     }, 

     setUser: function(user) { 
      _userName = user; 
     } 
    } 
}); 

지금

var LoginCtrl= function($scope,$location, SharedProperties) 
    { 
     $scope.signIn=function(email,pin) 
     { 
      //Some authentication code... 

      SharedProperties.setUser(user); 
      //Here i want to pass the username to homectrl.js 
      window.location.href="views/home.html" 
     } 
    } 

var app = angular.module("waleterosAdmin"); 

    var HomeCtrl=function($scope, SharedProperties) 
    { 
     //Here i want to get the username 
     var user = SharedProperties.getUser(); 
    } 
+0

어디에서 app.service를 작성해야합니까? 나는 loginModule.js 또는 app.js를 의미합니다. – srihari

+0

Id는'services.js'라는 새로운 파일을 만듭니다. – tymeJV

+0

K 그러면 app.service의 app은 어떻게됩니까? 내 말은 var app = angular.module ("waleterosAdmin"또는 "waleteros"); – srihari

0

한 단어 게터/세터를 SharedProperties을 주입하고 사용 서비스에 대한 경고의 의미는 응용 프로그램의 수명 동안 지속된다는 것, 즉 한 번만 인스턴스화된다는 것입니다. 나는 시나리오를 실행했다. 특히 라우팅이 구현되면, 공간을 절약하고 새로운 데이터로 바꾸기 위해 서비스의 데이터를 지우고 싶다. (당신은이 서비스를 볼 때마다이 서비스에 계속 추가하고 싶지 않다. 다른보기). 이렇게하려면 라우트 변경시 서비스를 정리하기 위해 호출하는 "제거"메소드를 작성하거나 컨트롤러의 지시문에 데이터를 저장하고 컨트롤러를 자체 지시문에 넣고 다음을 필요로 할 수 있습니다 첫 번째 지시어는 컨트롤러 엘리먼트로부터 데이터에 접근 할 수 있도록 해주고, DOM 엘리먼트가 선언되면 삭제되는 이점을 추가한다 (예를 들어 뷰 변경시).

관련 문제