在 linux 上构建时 $ionicDevice.ready() 不会触发

$ionicDevice.ready() does not fire when building on linux

这几天我一直在苦苦思索,就是想不通。

这是位于 www/js/ 文件夹中的 app.js 文件中我的 .run 部分:

angular.module('starter', ['ionic', 'starter.controllers', 'ngCordova'])

.run(function($rootScope, $state, $ionicPlatform, $cordovaDevice) {
  $ionicPlatform.ready(function(){

    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    alert( 'Platform ready!' );
    $rootScope.uuid = $cordovaDevice.getUUID();
    //$rootScope.$apply();
    alert( 'Uuid: ' + $rootScope.uuid );
  });
})

这是我的控制器,它接受 $rootScope.uuid 并将其传递给本地 $scope.uuid 变量:

app.controller('RoomlistsCtrl', function($rootScope, $scope, $ionicModal, $sailsBind) {
  $scope.uuid = $rootScope.uuid;
});

用于在服务器列表中添加新项目的表单:

<input ng-model="newItem.uuid" type="hidden" value="{{ uuid }}">

问题是,当我 ionic build android 在 windows 上(在我的工作电脑上)一切正常时,我在设备准备就绪后收到 uuid 的警报,但是我的家用 PC(运行s Elementary 0.3 Freya)当我 ionic build android 构建顺利时,一切似乎都正常,但我在 运行 [=] 上的应用程序后没有收到警报46=] phone (4.2).

我安装了设备插件,这是输出:

amotio@potato:~/git/my_project/mobile$ ionic plugin add org.apache.cordova.device
running cordova plugin add org.apache.cordova.device
Fetching plugin "org.apache.cordova.device" via plugin registry
Plugin "org.apache.cordova.device" already installed on android.
Saving plugin to package.json file

我已经在 .run 函数中包含了依赖项,据我所知,一切都是应该的。

有谁知道这里会发生什么情况?在过去的两天里,我一直在努力解决这个问题,我已经阅读了文档中的几乎所有内容(它仍然使用调用 ionic.Platform.ready() 的旧方法 - 我也尝试过但没有成功,我已经包含了 cordova.js 文件就在 </body> 标签之前,正如其他堆栈问题中提到的那样。

我很高兴能提供任何帮助或线索来揭示可能存在的问题,谢谢。

您是否尝试在设备就绪指令后设置警报?

问题可能与您的第一个警报上方的命令有关

if (window.cordova && window.cordova.plugins.Keyboard) {
  cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
  // org.apache.cordova.statusbar required
  StatusBar.styleDefault();
}

打印出 window.cordova / window.cordova.plugins.Keyboard & window.StatusBar 的每个值 cordova.plugins.Keyboard.hideKeyboardAccessoryBar(真);或 StatusBar.styleDefault();可能正在发送那个问题