如标题中所述,使用$ ionicPlatform.ready或ionic.Platform.ready
注册回调函数时,不会触发该函数。答案 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中的输出将是
Xcode5.1中的输出将是(HTML日志信息消失,因为Cordova重置在3日之前)