我正在尝试从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");
}
答案 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()
函数将重新加载应用程序,因此范围将重新初始化,就像您第一次打开应用程序一样。