当前位置: 首页 > 面试题库 >

在准备好Phonegap设备之后初始化我的angularJs应用

龙飞文
2023-03-14
问题内容

我有一个使用AngularJS的phonegap应用程序。

在我的应用程序上,我正在使用NetworkStatus插件来确认手机正在使用的连接类型。

在我的根路由上,我正在解析对服务的调用,该调用调用DeviceService,它负责访问navigator.network.connection.type并确定连接是打开还是关闭。解决方案(通过路由解析功能)将一个connectionState变量发送到控制器,该变量声明连接状态。

如果连接不可用,在那条路线上我想抛出一个错误。

话虽如此,我的问题是在访问我的路由后引发了DeviceReady事件。因此我的路线解析无法完成连接验证。

如何同步只有在DeviceReady事件触发后才能启动我的角度应用程序?


问题答案:

从AngularJs中获得进样器模块错误通常意味着您拼错了模块的名称,或者Angle根本找不到它。

如果Angular应用程序本身可以正常工作(例如,未包装在phonegap中),则意味着此问题按加载index.html时发生的顺序进行。

  • Cordova / PhoneGap加载您的索引页面
  • 它的Webview解析它并加载其脚本标签
  • 如果某些代码未包装在函数或对象中,则立即执行
  • Phonegap发送事件deviceready以告知您的应用程序其与本机代码的桥接已准备就绪

最后2个操作可以同时执行,但最常见的是我给您的操作。因此,例如,如果您通过ng-
app将您的angular模块名称放在html或body标签上,则angular会在找到它时尝试加载它。

因此,要使其正常工作,您需要:

  • YourAppName从html / body标签中删除
  • 通常创建您的角度模块(其名称必须在引导程序和模块调用中匹配)
  • 使用deviceready事件作为触发来增强应用程序的触发器

例如(简短的例子,头中只有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有点奇怪,但是对跟踪错误确实有用!

希望这可以帮助



 类似资料:
  • 设备初始化 图源:Yubico 设备初始化非常简单,但在安全隐私管理方面需要一些系统性方法。在将来,这可以通过定义 MDM 分发的组策略来加强下面所提到的措施。 设置一个 8 个数字字符的 PIN 码使 macOS 如期登录。如果 PIN 码中包含字母等其他字符,macOS 将无法工作。你可以使用一个安全的密码管理器生成和存储 PIN 码。 设置 钥匙管理(Management Key) 选项为

  • 问题内容: 有没有办法从JavaScript函数调用Angular函数? 我的HTML需要以下功能: 这里的问题是页面加载时出现了我的HTML代码,因此html中的ng指令未编译。所以我想在加载DOM时使用。 有没有一种方法可以在文档就绪时调用Angular函数? 问题答案: Angular具有自己的功能来测试文档是否就绪。您可以进行手动引导,然后设置用户名: 为此,您需要从html中删除ng-a

  • 我们通过具体案例来快速上手 Webpack。以下章节中的案例源码可以在 https://github.com/zhaoda/webpack-handbook/tree/master/examples/start 查看。

  • 让你快速上手的最好、最快的方法是使用示例应用程序模板 SERENE。 你有两种方式安装 SERENE 模板到你的 Visual Studio 中: 从 Visual Studio 库中获取安装 SERENE 直接在 Visual Studio 中安装 SEREN 即使你不使用该模板,也能够使用 Serenity 进行工作。 你可以在 NuGet 中把 Serenity 库添加到任何 .NET 项目

  • 这个项目尝试与ReactiveX.io保持一致。一般的跨平台文档和教程对于RxSwift来说也应该有效。 Observables 又名 Sequences Disposing Implicit Observable guarantees Creating your first Observable (aka observable sequence) Creating an Observable t