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