首页 文章

在离子应用中获取当前状态

提问于
浏览
0

整个离子和角度场景的新手 . 我使用离子创建器生成视图文件 . 我的目标是在继续进入选项卡之前检查用户是否已登录 . 但是,在进入身份验证部分之前,我想检查用户所在的窗口 . 我正在尝试使用简单的alert / console.log来识别进度 .

以下是我的代码 .

.controller('adminPageCtrl', ['$scope', '$stateParams', '$state', function     ($rootScope, $scope, $stateParams, $state) {
    //alert($state.current.name);
    $scope.currState = $state;
    var currentState = $state.current.name; 
    console.log($state);
}])

我遇到了下面的错误,我似乎无法做出正面或反面 . “ionic.bundle.js:26799 TypeError:无法读取未定义属性'current'” .

任何帮助是极大的赞赏 . 甚至是console.log($ state);命令返回“未定义” .

2 回答

  • 1

    您的代码的问题在于您定义的依赖性比实际使用的要多 .

    您可以通过删除函数定义中对$ rootScope的引用或将其添加到依赖项列表来修复它 .

    .controller('adminPageCtrl', ['$scope', '$stateParams', '$state', function($scope, $stateParams, $state) {
       //alert($state.current.name);
       $scope.currState = $state;
       var currentState = $state.current.name; 
       console.log($state);
    }])
    

    要么

    .controller('adminPageCtrl', ['$rootScope', '$scope', '$stateParams', '$state', function($rootScope, $scope, $stateParams, $state) {
       //alert($state.current.name);
       $scope.currState = $state;
       var currentState = $state.current.name; 
       console.log($state);
    }])
    

    由于您使用依赖项的名称来命名函数内部的变量,您还可以使用Implicit Annotation(请查看文档https://docs.angularjs.org/guide/di):

    .controller('adminPageCtrl', function($scope, $stateParams, $state) {
       //alert($state.current.name);
       $scope.currState = $state;
       var currentState = $state.current.name; 
       console.log($state);
    })
    
  • 2

    你需要 $rootScope 依赖 . 没有它们,您将收到另一个参数列表 .

    .controller('adminPageCtrl', ['$rootScope', '$scope', '$stateParams', '$state', function($rootScope, $scope, $stateParams, $state) {
        $scope.currState = $state;
        var currentState = $state.current.name; 
        console.log($state);
    }])
    

相关问题