I'm using Cordova 3.3.1-0.4.2 and Angular 1.2.13
I need to manually bootstrap Angular once I get the Cordova 'deviceready' event.
I'm testing on a Nexus 5 with cordova run android
but am having exactly the same behaviour on an iPhone.
To simplify the problem this is JS running in the global document scope. Scripts are being loaded before the closing </body>
tag.
This works:
angular.bootstrap(document.getElementById("app"), ["MyApp"]);
This doesn't work:
function init(){
angular.bootstrap(document.getElementById("app"), ["MyApp"]);
}
document.addEventListener('deviceready', function () {
init();
}, true);
However if I add alert("init")
to the init method that shows it IS running. Also alert(angular) and alert(document.getElementById("app")) show that they exist.
I don't understand why, given that init() is being called, it doesn't work when called from the EventListener callback yet it does work if called directly.
Seems weird / unintuitive.
Anyone?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…