Phonegap& AngularJS - ngCookies在Android上不起作用

时间:2015-02-14 17:39:12

标签: javascript android angularjs cordova

我有一个带有以下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;

}]);

0 个答案:

没有答案