Ionic Deploy不更新快照

时间:2016-09-17 09:46:16

标签: ionic-framework

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

使用:离子上传 - 注意"版本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 个答案:

答案 0 :(得分: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()函数将重新加载应用程序,因此范围将重新初始化,就像您第一次打开应用程序一样。

祝你好运