我有一个带有以下ng-click功能的按钮(Controller1):
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处理程序(Controller2):
//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内,因为我正在接收正在进行的"摘要"路线改变后的错误&路线改变之前警报通知显示。
在Android设备上(4.4.4)&模拟器(5.0)我没有收到任何警报通知。
工作:iOS(7& 8)simualtor,所有浏览器&在Phonegap Developer app。
中我试图将整个块包装在$ timeout内并在controller1 attachToChat函数中做同样的事情。问题仍然存在。
***更新:似乎这与AngularJS无关,但与Phonegap,尤其是Android平台无关。我用纯JS(document.cookie)做了一些测试,但它也没有用。
使用html5 localStorage& sessionStorage而不是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;
}]);