我使用离子框架开发网站。这是我的代码:
$rootScope.$on('$cordovaPush:tokenReceived', function(event, data) {
storageService.save("deviceToken", data.token);
});
var devicetoken =JSON.parse(storageService.get("deviceToken"));
HomeOwners.Create(devicetoken).then(function(response) {
console.log(response.user_id);
})
alert(devicetoken);
但是这个警告为null。当我刷新页面时,我觉得我的设备令牌值不存在。
请帮助
答案 0 :(得分:2)
HTTP请求是一个异步过程,在backgroud中处理。因此,当您alert(devicetoken)
时,请求很可能没有完成。
通过尽可能少地更改代码,您可以调用$cordovaPush:tokenReceived
catch中的函数。
$rootScope.$on('$cordovaPush:tokenReceived', function(event, data) {
storageService.save("deviceToken", data.token);
weHaveTheDataDoSomething();
});
由于您还使用AngularJS对此进行了标记,因此您应该阅读一些有关解析和异步过程的内容。解决的一个例子:Resolving Data the Right Way
答案 1 :(得分:0)
重点是在尝试访问或获得任何响应之前等待请求完成。
试试这个:
var devicetoken;
storageService.get('deviceToken')
.success(function(response){
devicetoken = angular.fromJson(response);
console.log(devicetoken);
}).error(function(response){
// do something on error with response
});
如果这不起作用,请发布storageService
代码。