我搜索了很多,但我无法找到解决问题的方法: 我是AngularJS的新手,我正在使用 Ionic with Firebase 来创建应用。我想屏蔽来自未经身份验证的用户的观看次数。因此,当用户点击未经身份验证的视图时,应弹出登录模式并将视图重定向到主页。
代码是这样的:
myApp.controller('AppCtrl', ['$scope','$ionicModal', $state,...,
function($scope, $ionicModal, $state,...) {
// Create the login modal that we will use later
$ionicModal.fromTemplateUrl('templates/login.html', {
scope: $scope
}).then(function(modal) {
$scope.modalLogin = modal;
});
// Open the login modal
$scope.login = function() {
if(!$scope.modalLogin.isShown()){
$scope.modalLogin.show();
}
};
/*** Verify Authentication - This is the problematic part... ***/
$scope.$on("$stateChangeStart",
function(event, toState, toParams, fromState, fromParams){
var auth = firebase.auth();
if (toState.views.menuContent.authenticate && auth.currentUser === null){
event.preventDefault();
// User isn’t authenticated
if(fromState.name != "app.home"){
$state.go("app.home");
}
if(!$scope.modalLogin.isShown()){
$scope.login();
}
}
else{
return;
}
});
}]);
问题在于,无论我做什么,$scope.$on("$stateChangeStart",)
回调函数都会触发两次。我检查了双倍的控制器声明,我删除了$scope.login()
函数,即使事件监听器为空,也会被触发两次:
//Verify Authentication
$scope.$on("$stateChangeStart",
function(event, toState, toParams, fromState, fromParams){
console.log('This fires twice...');
}
有什么想法?我是angularJS的新手,所以也许这是一个非常简单的解决方案,但我无法找到它。
提前致谢。
答案 0 :(得分:1)
这在过去发生在我身上,问题是因为角度加载了两次。我已经包含了角度脚本,离子包括角度脚本。
删除我们自己的角度脚本并让离子处理它是我的解决方案