2015-09-05 46 views
0

我devolping使用離子framework.This一個網站是我的代碼:AngularJS等待HTTP事件成功

$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.When我刷新頁面的I T alret我設備令牌值。

請幫助

+0

您可以添加「storageService」代碼嗎? –

回答

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代碼。

2

HTTP請求是一個異步過程,它在背景中工作。所以當你做alert(devicetoken)時,請求很可能沒有完成。

通過儘可能少地更改代碼,您可以調用$cordovaPush:tokenReceived捕獲中的函數。

$rootScope.$on('$cordovaPush:tokenReceived', function(event, data) { 

    storageService.save("deviceToken", data.token); 

    weHaveTheDataDoSomething(); 

}); 

既然你也用AngularJS標記了這個,你應該讀一些關於解析和異步過程。已解決的一個示例:Resolving Data the Right Way