Safari在Angular的$window.localStorage.setItem上循环
Safari goes eternal loop on Angular's $window.localStorage.setItem
我目前正在Safari iPhone 4上测试我的应用程序。Chrome在此设备上运行良好,但Safari已停止在$window.localStorage.setItem('token',token)行上工作。什么也没发生,应用程序没有宕机,只是停止在这一行上工作。我认为是无休止的循环,但也许有一些安托赫吟游诗人。我已经阅读了有关此主题的其他主题 - 但它们没有帮助。
文件:
应用.js
.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
$stateProvider
.state('home', {
url: '/',
})
.state('signin', {
url: '/signin',
templateUrl: '/templates/signin.html',
controller: 'SignInCtrl'
})
.state('eventmenu', {
url: '/event',
abstract: true,
templateUrl: '/templates/event-menu.html',
})
.state('eventmenu.checkin', {
url: '/console',
views: {
'menuContent' :{
templateUrl: '/templates/console.html',
controller: 'ConsoleCtrl'
}
},
})
.state('eventmenu.tasks', {
url: '/tasks',
views: {
'menuContent' :{
templateUrl: '/templates/tasks.html',
controller: 'TasksCtrl'
}
},
})
.state('eventmenu.task', {
url: '/task/:taskId',
views: {
'menuContent': {
templateUrl: '/templates/task-detail.html',
controller: 'TaskDetailCtrl'
}
}
})
.state('eventmenu.constructor', {
url: '/constructor',
views: {
'menuContent': {
templateUrl: '/templates/constructor.html',
controller: 'TaskConstructorCtrl'
}
}
});
$urlRouterProvider.otherwise('/signin');
$httpProvider.interceptors.push('AuthInterceptor');
});
服务.js
.factory('authenticationSvc', function($http, $q, $window, $location, urls, $state, $rootScope) {
var userInfo = false;
function login(userName, password) {
var deferred = $q.defer();
var data = {
username: userName,
password: password
};
$http({
url: urls.login,
method: 'POST',
data:data
}).then(function (response, status, headers, config) {
if (response.data.token) {
//problem starts here
authenticationSvc.setToken(response.data.token);
$state.go('eventmenu.tasks');
}
deferred.resolve(response, status, headers, config);
}, function(response, status, headers, config) {
deferred.reject(response, status, headers, config);
});
return deferred;
}
function getToken() {
return $window.localStorage.getItem('token');
}
function setToken(token) {
//problem occurs here. after this line alerts don't works
$window.localStorage.setItem('token', token);
}
function deleteToken() {
$window.localStorage.removeItem('token');
}
function getUserInfo(){
return userInfo;
}
var authenticationSvc = {
login: login,
getUserInfo: getUserInfo,
deleteToken: deleteToken,
getToken: getToken,
setToken: setToken
};
return authenticationSvc;
})
控制器.js
....
.controller('SignInCtrl', function($scope, $state, authenticationSvc) {
$scope.user = {};
$scope.signIn = function(user) {
var result = authenticationSvc.login(user.username, user.password);
result.promise.then(function(data){
if(data.status == 400){
$scope.errors = {}
for (var key in data.data) {
if (data.data.hasOwnProperty(key)) {
$scope.errors[key] = data.data[key].join(", ");
}
}
}
})
};
})
.....
而不是使用它:
function getToken() {
return $window.localStorage.getItem('token');
}
我使用过:
function getToken() {
return localStorageService.get('token');
}
// import 'LocalStorageModule' dependence in module.
这奏效了
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何将localStorage值设置为false
- 如果localstorage为空,则显示欢迎消息
- 基于localStorage的Meteor激活模板
- LocalStorage phonegap摄像头图像
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- 在特定条件下从存储在localStorage中的阵列中删除对象
- JavaScript/Ionic2-为什么我可以't检索localStorage值
- using LocalStorage ionic 2
- 如何使用javascript localStorage保存用户选择并在不同的html页面中显示
- 从localStorage添加和检索阵列
- Safari在Angular的$window.localStorage.setItem上循环
- window.localStorage.setItem和localStorage.setItem之间是否有任何区别?
- 检测浏览器是否允许设置localStorage.setItem();
- localStorage.刷新时setItem不持久
- Webview localStorage.setItem(javascript)不能在加载url(android)之前设
- IE11不接受字符串(变量)作为localStorage.setItem()的参数
- 科尔多瓦/ Javascript localStorage.setItem仅在第一次启动时使用