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

时间:2016-12-12 17:19:49

标签: javascript angularjs ionic-framework

全新的离子和角度场景。 我使用离子创建器生成视图文件。 我的目标是在继续进入选项卡之前检查用户是否已登录。 但是,在进入身份验证部分之前,我想检查用户所在的窗口。 我正在尝试使用简单的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);命令返回“undefined”。

2 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您定义的依赖性比实际使用的要多。

您可以通过删除函数定义中对$ 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);
}])

OR

.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);
})

答案 1 :(得分:1)

您需要$rootScope依赖项。如果没有它们,您将收到另一个参数列表。

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