我是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 :(得分:0)
你可以在模块之间共享服务,从而在模块之间传递价值, 请看这里Share a single service between multiple angular.js apps,以及sharing between modules with AngularJS?
答案 1 :(得分: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();
}
答案 2 :(得分:0)
关于服务的一个警告是它们在应用程序的生命周期中持续存在,即它们仅被实例化一次。我遇到过各种情况,特别是在实施路由之后,我想要从服务中删除数据以节省空间并用新数据替换它(你不想每次看时都继续添加这项服务在另一种观点)。要做到这一点,你可以写一个" wipe"您调用以清除路由上的服务更改的方法,或将数据粘贴到指令(在其控制器上),将控制器放入它们自己的指令中,并使这些指令需要第一个指令,以便可以从一旦声明了DOM元素,就会被擦除的额外好处是(例如,在视图更改时)。