Javascript Phonegap&AngularJS-ngCookies在Android上不起作用
我有一个带有以下ng click功能控制器1的按钮:Javascript Phonegap&AngularJS-ngCookies在Android上不起作用,javascript,android,angularjs,cordova,Javascript,Android,Angularjs,Cordova,我有一个带有以下ng click功能控制器1的按钮: attachToChat: function(id, what, how){ //save attach type to cookie and redirect to chat detail view $cookieStore.put('attachToChat', {id: id, what: what, how: how }); $scope.fn.goTo('chat/'+id);
attachToChat: function(id, what, how){
//save attach type to cookie and redirect to chat detail view
$cookieStore.put('attachToChat', {id: id, what: what, how: how });
$scope.fn.goTo('chat/'+id);
}
。。。其中fn.goTo使用$location更改当前页面
当页面成功更改时,我有以下cookie处理程序控制器2:
//Handle attach file to chat
//
var attachInfo = $cookieStore.get('attachToChat');
if(attachInfo) {
//remove attachToChat info from cookie
$cookieStore.remove('attachToChat');
$timeout(function(){
$scope.alert('Attach: '+ attachInfo.what + ' -> ' + attachInfo.how);
},1000);
}
在这里,我将警报函数包装在$timeout内,因为我在routechange之后收到一个摘要进行中错误&警报通知在routechange之前显示
问题
在android设备4.4.4和模拟器5.0上,我没有收到任何警报通知
工作内容:iOS 7和8 simualtor、所有浏览器和Phonegap开发者应用程序内部
我尝试将整个块包装在$timeout中,并在controller1attachtochat函数中执行了相同的操作。问题依然存在
***更新:这似乎与AngularJS无关,但与Phonegap有关,尤其是Android平台。我用纯JS document.cookie做了一些测试,但它也不起作用
变通办法
使用html5本地存储和会话存储,而不是ngCookies模块。
我使用较旧的1.3.x angularjs版本进行了一些测试,但问题仍然存在。这可能与angularjs或phonegap有关。。
这是我为本地和会话存储提供的服务,以防有人想快速解决此问题:
MYAPP.factory('storageLocal', ['$window', function($window){
var storageLocalMethods = {};
//fn: set
//desc: set a local storage variable
storageLocalMethods.set = function(name, value){
$window.localStorage.setItem(name, angular.toJson(value));
}
//fn: get
//desc: get a local storage variable
storageLocalMethods.get = function(name){
return angular.fromJson($window.localStorage.getItem(name));
}
//fn: remove
//desc: remove a variable from local storage
storageLocalMethods.remove = function(name){
$window.localStorage.removeItem(name);
}
return storageLocalMethods;
}]);
MYAPP.factory('storageSession', ['$window', function($window){
var storageSessionMethods = {};
//fn: set
//desc: set a session storage variable
storageSessionMethods.set = function(name, value){
$window.sessionStorage.setItem(name, angular.toJson(value));
}
//fn: get
//desc: get a session storage variable
storageSessionMethods.get = function(name){
return angular.fromJson($window.sessionStorage.getItem(name));
}
//fn: remove
//desc: remove a variable from session storage
storageSessionMethods.remove = function(name){
$window.sessionStorage.removeItem(name);
}
return storageSessionMethods;
}]);
为什么不使用$rootScope呢?我不想夸大$rootScope,我喜欢保持它干净,正如这里有人说的,$rootScope不应该用于在我们有服务和工厂之类的东西时共享变量。