2014-10-08 122 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; 
     } 
    } 
}); 

現在注入SharedProperties和使用的getter/setter

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 2014-10-08 14:29:32

+0

編號創建一個名爲'services.js'的新文件 – tymeJV 2014-10-08 14:29:59

+0

K那麼app.service中的應用程序呢?我的意思是var app = angular.module(「waleterosAdmin」或「waleteros」); – srihari 2014-10-08 14:43:38

0

一個字關於服務的警告是它們在應用程序的整個生命週期中都持續存在,即它們只被實例化一次。我遇到了各種情況,尤其是一旦實現了路由,我想從服務中清除數據以節省空間並將其替換爲新數據(您不希望每次查看時都繼續添加此服務不同的看法)。要做到這一點,你可以寫一個你調用的「擦除」方法來清理路由變化的服務,或者將數據粘貼到指令中(在其控制器上),將控制器放入他們自己的指令中,並且要求這些指令第一個指令,這樣數據就可以從控制器訪問,並且一旦聲明瞭DOM元素就會被銷燬(例如在視圖更改上),這些數據就會被擦除。

相關問題