Javascript 在多页PhoneGap应用程序上,我应该将DeviceRady放在哪里?
1) 我有多页PhoneGap应用程序。它们中的每一个都可以调用PhoneGap API。 我应该在每一页上放置Javascript 在多页PhoneGap应用程序上,我应该将DeviceRady放在哪里?,javascript,android,ios,angularjs,cordova,Javascript,Android,Ios,Angularjs,Cordova,1) 我有多页PhoneGap应用程序。它们中的每一个都可以调用PhoneGap API。 我应该在每一页上放置deviceradylistener,还是只在第一页上放置就足够了 2) 我使用带有的AngularJS路由来启用单页应用程序。主页是index.html,所有其他页面都嵌入在index.html内部的。每个页面都可以调用PhoneGap API。仅将deviceready listener放在index.html上就足够了吗?只需在index.html中添加设备就绪,就像在angua
devicerady
listener,还是只在第一页上放置就足够了
2) 我使用带有
的AngularJS路由来启用单页应用程序。主页是index.html
,所有其他页面都嵌入在index.html内部的
。每个页面都可以调用PhoneGap API。仅将deviceready listener放在index.html上就足够了吗?只需在index.html中添加设备就绪,就像在angualrjs中一样,所有其他页面都将通过ng视图包含在index.html中。DeviceRady这样应该可以正常工作
另外,在调用DeviceRady后引导angularjs,因为如果您要脱机使用应用程序,它可能会导致问题
希望这有帮助 我通过将设备就绪放在index.html中,并将引导angularjs放在deviceready回调中使其工作。但是,它没有经过优化,因为它会在与PhoneGap本机进程建立连接之前阻止UI呈现 描述了更好的方法。基本上,他使用promise模式,因此只有Phonegap API调用等待deviceready事件。UI呈现和angularjs绑定甚至可以在调用deviceready之前完成。这样,用户体验会更好
angular.module('fsCordova', [])
.service('CordovaService', ['$document', '$q',
function($document, $q) {
var d = $q.defer(),
resolved = false;
var self = this;
this.ready = d.promise;
document.addEventListener('deviceready', function() {
resolved = true;
d.resolve(window.cordova);
});
// Check to make sure we didn't miss the
// event (just in case)
setTimeout(function() {
if (!resolved) {
if (window.cordova) d.resolve(window.cordova);
}
}, 3000);
}]);
angular.module('myApp', ['fsCordova'])
.controller('MyController',
function($scope, CordovaService) {
CordovaService.ready.then(function() {
// Cordova is ready
});
});