我有一个使用AngularJS的phonegap应用程序。
在我的应用程序上,我正在使用NetworkStatus插件来确认手机正在使用的连接类型。
在我的根路由上,我正在解析对服务的调用,该调用调用DeviceService,它负责访问navigator.network.connection.type并确定连接是打开还是关闭。解决方案(通过路由解析功能)将一个connectionState变量发送到控制器,该变量声明连接状态。
如果连接不可用,在那条路线上我想抛出一个错误。
话虽如此,我的问题是在访问我的路由后引发了DeviceReady事件。因此我的路线解析无法完成连接验证。
如何同步只有在DeviceReady事件触发后才能启动我的角度应用程序?
从AngularJs中获得进样器模块错误通常意味着您拼错了模块的名称,或者Angle根本找不到它。
如果Angular应用程序本身可以正常工作(例如,未包装在phonegap中),则意味着此问题按加载index.html时发生的顺序进行。
deviceready
最后2个操作可以同时执行,但最常见的是我给您的操作。因此,例如,如果您通过ng- app将您的angular模块名称放在html或body标签上,则angular会在找到它时尝试加载它。
因此,要使其正常工作,您需要:
YourAppName
例如(简短的例子,头中只有css):
<body> <div class="app"> <h1>PhoneGap</h1> <div id="deviceready" class="blink"> {{2+2}} </div> </div> <script type="text/javascript" src="phonegap.js"></script> <script type="text/javascript" src="js/angular.min.js"></script> <script type="text/javascript"> document.addEventListener('deviceready', function onDeviceReady() { angular.bootstrap(document, ['YourAppName']); }, false); var YourAppName = angular.module('YourAppName', []); </script> </body>
如果您想自己理解这一点,建议您放置一些console.log以获得事物的顺序。 您也可以使用Chrome DevTools远程调试,如果您的PC上装有Chrome 32+,而手机上只有android 4.4,或者只有PC却在模拟器上进行调试,则效果很好。很高兴看到错误和内容。首先调试Webview有点奇怪,但是对跟踪错误确实有用!
希望这可以帮助