2016-09-17 50 views
0

我试图从Ionic云中获取最新的快照并将其安装到Android设备上。我已经直接从Ionic Deploy文档复制代码,代码工作正常,但没有错误,但似乎并没有实际更新我的旧文件,我上传到Ionic Cloud上的新文件Ionic部署不更新快照

使用:离子上传--note“版本x“

然后我转到云并单击部署。在控制台日志(从Android设备)中查看日志源时,可以看到快照是,发现的是已下载已提取

但是,即使我的Android设备上的应用程序中看不到一个文件中的简单文本更改。我需要调用另一个函数$ ionicDeploy.extract();或$ ionicDeploy.load();

angular.module('starter', ['ionic', 'starter.controllers', 'ionic.cloud', 'starter.services','ngCordova','ngStorage','chart.js','angular-svg-round-progress']) 

    .config(function($ionicCloudProvider) { 

     $ionicCloudProvider.init({ 
     "core": { 
      "app_id": "xxxxxxxx" 
     } 
     }); 
    }) 

    .run(function($http,$ionicPlatform,$rootScope,$cordovaBluetoothSerial,$cordovaStatusbar,$window,$cordovaSQLite,$ionicDeploy) { 

     $ionicPlatform.ready(function() { 
      $rootScope.alreadyUpdated = 'false'; 

      if($rootScope.alreadyUpdated == 'false') 
      { 
       $ionicDeploy.check().then(function(snapshotAvailable) { 
         // When snapshotAvailable is true, you can apply the snapshot 
        $ionicDeploy.download().then(function() { 
          return $ionicDeploy.extract(); 

          $ionicDeploy.load(); 
          $rootScope.alreadyUpdated = 'true'; 
         }); 
       }); 
       console.log("MOST recent"); 
      } 

回答

1

$ionicDeploy.load()之前该行已return $ionicDeploy.extract();,这意味着你将永远无法与$ionicDeploy.load()部分(return关键字使得它无法访问的代码 - 任何像样的IDE甚至会强调这一点你)。

你应该更换这一部分:

$ionicDeploy.extract().then(function() { 
    console.log("Extracted"); 
    $ionicDeploy.load(); 
    $rootScope.alreadyUpdated = 'true'; //this also is not needed FYI, but I left it to keep your code intact. see note 
}); 

注意 - $ionicDeploy.load()后,就没有必要调用$rootScope.alreadyUpdated。这是因为load()函数将重新加载应用程序,所以范围将被重新初始化,就像您第一次打开该应用程序一样。

好运

+0

如何获得$ ionicDeploy.load()以再次调用run块或onDevice准备好? – user1261710