Javascript Angularjs调用工厂更改$scope
首先感谢您抽出时间 我有这个问题,我真的不知道为什么Javascript Angularjs调用工厂更改$scope,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,首先感谢您抽出时间 我有这个问题,我真的不知道为什么 main .controller('MainSelectsCtrl', function($scope, $rootScope, $stateParams, $state, $http, $ionicPopup, $translate, $ionicHistory, Auth, ajax, Data, sections, utils) { var filterBarInstance; _initController = f
main
.controller('MainSelectsCtrl', function($scope, $rootScope, $stateParams, $state, $http, $ionicPopup, $translate, $ionicHistory, Auth, ajax, Data, sections, utils) {
var filterBarInstance;
_initController = function () {
$rootScope.icon_sections = _searchIcon($ionicHistory.currentStateName().split(".")[1])
if (Auth.isLoggedIn()) {
PARENT = $scope.$parent
}
}
...
_initController();
及
如果我使用$scope.isLogged,那么PARENT就可以了,我以后可以访问所需的方法。
如果我使用Auth.isLoggedIn(),我不知道为什么,$scope.$parent会改变
以下是工厂认证:
angular.module('auth.services', [])
.factory('Auth', function () {
var _user = JSON.parse(window.localStorage['session']);
var setUser = function (session) {
_user = session;
window.localStorage['session'] = JSON.stringify(_user);
}
return {
setUser: setUser,
isLoggedIn: function () {
return _user ? true : false;
},
getUser: function () {
return _user;
},
logout: function () {
window.localStorage.removeItem("session");
_user = null;
}
}
});
非常感谢我最大的问题是:为什么要访问父范围?这是一个很大的禁忌。我真的不清楚你在问什么,或者父级更改的实际意思是什么。问题是,我需要调用父级视图中声明的方法,如果我使用$scope.isLogged,它可以工作,我可以执行它,如果我使用Auth.isLoggedIn()我不知道,但是在$scope中。$parent我可以执行该方法,它返回给我未定义,因为我检查函数是否存在。我不想访问父作用域,我想访问父视图中的函数并执行它。我有一个选择,可以更改应用程序中的项目或部分,该功能始终在父控制器中。
angular.module('auth.services', [])
.factory('Auth', function () {
var _user = JSON.parse(window.localStorage['session']);
var setUser = function (session) {
_user = session;
window.localStorage['session'] = JSON.stringify(_user);
}
return {
setUser: setUser,
isLoggedIn: function () {
return _user ? true : false;
},
getUser: function () {
return _user;
},
logout: function () {
window.localStorage.removeItem("session");
_user = null;
}
}
});