我想在登录用户上设置隐藏的输入值,然后我想在另一个页面中获取隐藏的输入值。
index.html(此页面有隐藏输入)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ionic/ng-cordova-master/demo/www/lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
</head>
<body ng-app="starter">
<input type="hidden" id="hiddenValue" ng-value="hiddenValue" />
<ion-nav-view></ion-nav-view>
</body>
</html>
我设置隐藏的输入值然后我使用 $ location.path('/ HomePage'); 以便重定向如下
Login.html的控制器如下
.controller('LoginCtrl', function ($scope, LoginService, $ionicPopup, $state, $location) {
$scope.data = {};
$scope.login = function () {
LoginService.loginUser($scope.data.username, $scope.data.password).success(function (data) {
$scope.hiddenValue = "TestValue"; // I set value here
$location.path('/Menu');
}).error(function (data) {
var alertPopup = $ionicPopup.alert({
title: 'Login failed!',
template: 'Please check your credentials!'
});
});
}
})
我无法在下方的 Menu.html 中显示 $ scope.hiddenValue 。
.controller('MenuCtrl', function ($scope, LoginService, $ionicPopup, $state, $location) {
alert($scope.hiddenValue);
})
当我尝试使用警告($ scope.hiddenValue); 以显示隐藏输入的值时,我得到未定义错误
我想念为什么我无法在另一页显示价值?
答案 0 :(得分:3)
for
不属于loginCtrl的范围。
$ scope.hiddenValue =“TestValue”; loginCtrl中的statetment将TestValue分配给LoginCtrl的$ scope。
您可以创建服务“user”并拥有this.user =='';
empFound
在您需要共享名称的控制器中注入此“用户”服务。并使用LoginCtrl控制器中的user.setUser('test')设置值。
答案 1 :(得分:-1)
看起来你想要在控制器之间共享数据,这是一个非常普遍的需求。看看这样的事情可能会对你有帮助 - AngularJS: How can I pass variables between controllers?
最好的方法是使用AngularJS服务或工厂。