Angularjs 如何将动态数据从一个模块控制器传递到另一个模块控制器

Angularjs 如何将动态数据从一个模块控制器传递到另一个模块控制器,angularjs,Angularjs,我是AngularJS新手,我想将动态值(用户名)从一个模块中的一个控制器传递到另一个模块中的另一个控制器。路由和其他事情都很好。 这是我的密码 loginModule.js (function() { var app = angular.module("waleteros", ["ngRoute","ui.bootstrap","ngCookies"]); app.config(function($routeProvider) { $ro

我是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);
    })

您可以在模块之间共享服务,从而在模块之间传递值,
请查看此处,此处

您将使用一个服务来持久化数据,然后将该服务注入控制器:

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();
    }

关于服务的一个警告是,它们会在应用程序的生命周期中持续存在,也就是说,它们只实例化一次。我遇到过这样的情况,尤其是在实现路由之后,我希望擦除服务中的数据以节省空间,并用新数据替换它(您不希望每次看到不同的视图时都不断向此服务添加数据)。为此,您可以编写一个“wipe”方法,调用该方法来清除路由更改上的服务,或者将数据粘贴到一个指令(在其控制器上),将控制器放入它们自己的指令中,并让这些指令需要第一个指令,因此,可以从控制器访问数据,并在DOM元素声明为on时(例如,在视图更改时)将其擦除。

我应该在哪里写入app.service?我的意思是loginModule.js或app.jsId创建一个名为
services.js
K的新文件,那么app.service中的app呢?我的意思是var app=角度模块(“waleterosAdmin”或“waleteros”);我在HomeCtrl中得到空值。我做了var-app=angular.module(“waleterosAdmin”);