2015-10-13 24 views
1

我想在登录用户上设置隐藏的输入值,然后我想要隐藏输入值在另一个页面。Ionic Angular js隐藏的输入值在另一个页面中不显示

的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( '/主页');为了如下

的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!' 
      }); 
     }); 
    } 
}) 

我不能在下侧显示$ scope.hiddenValue Menu.html

.controller('MenuCtrl', function ($scope, LoginService, $ionicPopup, $state, $location) { 

    alert($scope.hiddenValue); 

}) 

当我尝试使用警报($ scope.hiddenValue);为了显示隐藏的输入值,我得到未定义的错误

我在哪里错过为什么我不能在另一个页面显示值?

+0

在您的应用程序中有隐藏字段的目的是什么? – Michael

+0

我想将参数传递给另一个页面。例如,如果登录成功,我想在另一个页面中显示用户名等。 –

+0

您意识到这是做错的方法。在Angular中,您应该使用服务。 – Michael

回答

3
<input type="hidden" id="hiddenValue" ng-value="hiddenValue" /> 

不属于loginCtrl范围内。

$ scope.hiddenValue =“TestValue”; loginCtrl中的语句会将TestValue分配给LoginCtrl的$范围。

您可以创建一个服务“用户”,并有this.user =='';

.service('user', function() { 
    this.user = ''; 

    this.setUser = function(name) { 
     this.user = name; 
    } 
}); 

在需要共享名称的控制器中注入此“用户”服务。还可以在LoginCtrl控制器中使用user.setUser('test')设置值。

+0

为了达到这样的目的,我需要使用什么? –

+0

请检查上述编辑。 –