我正在使用Cordova和AngularJS开发移动应用程序。如何在Cordova设备准备好之前限制AngluarJS的引导?基本上,在设备准备好之前,我不想使用任何AngularJS控制器。
我正在使用Cordova和AngularJS开发移动应用程序。如何在Cordova设备准备好之前限制AngluarJS的引导?基本上,在设备准备好之前,我不想使用任何AngularJS控制器。
手动引导您的Angular应用程序:
从HTML代码中删除ng-app
属性,以便Angular不会自动启动。
在您的JavaScript代码中添加类似以下的内容:
document.addEventListener("deviceready", function() {
// retrieve the DOM element that had the ng-app attribute
var domElement = document.getElementById(...) / document.querySelector(...);
angular.bootstrap(domElement, ["angularAppName"]);
}, false);
Angular应用程序启动的文档。
window.ionic.Platform.ready()
怎么样? - levsaapp
,就像我的示例一样。请查看两个 angular.bootstrap(document.body, ['app']);
行,并将其更改为你的应用程序中的主要模块名称。如果这对你有用,请不要忘记给它投票。 - Michael Orylangular.element(document).ready(function () {
var domElement = document.getElementById('appElement');
angular.bootstrap(domElement, ["angularAppName"]);
});
更新
我的建议是将上述内容放在适当的deviceready函数中,例如:
document.addEventListener("deviceready", function() {
angular.element(document).ready(function () {
var domElement = document.getElementById('appElement');
angular.bootstrap(domElement, ["angularAppName"]);
});
}, false);
documentReady != deviceready
。 - TheHippodocument.addEventListener("deviceready", function() {
angular.element(document).ready(function () {
// retrieve the DOM element that had the ng-app attribute
var domElement = document.getElementById('appElement');
angular.bootstrap(domElement, ["angularAppName"]);
});
}, false);
- levsaangular.bootstrap()
之前使用angular.element(document).ready()
。但是,如果window.ionic.Platform.ready()
(或document.addEventListener("deviceready", ...)
)总是意味着_document ready_,那么它就不需要了。 - levsa关于使用来自TheHippo的解决方案:
document.addEventListener("deviceready", function() {
// retrieve the DOM element that had the ng-app attribute
var domElement = document.getElementById(...) / document.querySelector(...);
angular.bootstrap(domElement, ["angularAppName"]);
}, false);
因为"Cordova.js"会在Cordova或Phonegap的构建过程中被解析,而在本地主机或模拟测试环境中不可用,所以它无法在浏览器中运行。
因此,“deviceready”事件永远不会被触发。您可以在浏览器控制台中手动触发它。
var customDeviceReadyEvent = new Event('deviceready');
document.dispatchEvent(customDeviceReadyEvent);
同时确保在设置所有的angular模块/控制器/工厂/指令等之后,触发angular的引导程序。