当使用requireJS时,$ ionicPlatform.ready(ionic v1.0.0-beta.11)不会触发

时间:2014-09-08 05:11:35

标签: cordova ionic-framework

如标题中所述,使用$ ionicPlatform.ready或ionic.Platform.ready

注册回调函数时,不会触发该函数。

1 个答案:

答案 0 :(得分:1)

原因是因为ionic.Platform使用'load'事件来注册'deviceready'事件。由于使用了requireJS,因此在离子获得挂起'load'事件的机会之前,将触发'load'事件。然后离子错过'deviceready'事件。解决方案非常简单,只需触发另一个'load'事件,让离子调用自己的初始化回调函数或直接在文档上注册你自己的'deviceready'处理程序。

 window.addEventListener("load", onWindowLoad, false);

使用以下代码进行测试

 <body onload="console.log('body onload triggered')">
 <script src="bower_components/requirejs/require.js"></script>
 <script src="scripts/requirejsconfig.js"></script>
 <script src="cordova.js"></script>
 </body>

在'requirejsconfig.js'

  //pre-load the non AMD libraries for the r.js optimization
  require([   'domReady!',
        'angular',
        'ionic',
        'ngIonic',
        ...
    ],
    function (document, ng, ionic)
    {
        'use strict';

        console.log('call ionic Platform ready');
        ionic.Platform.ready(function ()
                            {
                                'use strict';
                                ng.bootstrap(document, ['app']);
                            });
    });

chrome中的输出将是

  1. 身体onload触发
  2. 此窗口中的离子钩载事件
    这是通过添加输出 'console.log('与此窗口关联的钩子加载事件');'在'window.addEventListener(“load”,onWindowLoad,false)之前进入ionic.js;函数onPlatformReady(){...'
  3. 调用离子平台准备
  4. Xcode5.1中的输出将是(HTML日志信息消失,因为Cordova重置在3日之前)

    1. 由于页面加载而重置插件。
    2. 完成加载:file:/// Users ...
    3. 使用此窗口进行离子加载事件
    4. 调用离子平台准备