AngularJS运行方法调用Cordova 3.4 navigator.globalization未定义
我正在努力尝试在启动时检测设备语言设置。我正在使用AngularJS和Cordova 3.4。在AngularJs run方法中,我调用了一个调用navigator.globalization.getPreferredLanguage()的服务 问题是,在angularjs启动期间,navigator.globalization未定义。我在用角度的承诺等待魔鬼日活动。全球化插件在第二次点击应用程序时开始工作,所以我想这是一个时间问题。地理定位插件在启动时运行良好,所以我不明白为什么会发生这种情况 AngularJS运行方法AngularJS运行方法调用Cordova 3.4 navigator.globalization未定义,angularjs,cordova,globalization,navigator,Angularjs,Cordova,Globalization,Navigator,我正在努力尝试在启动时检测设备语言设置。我正在使用AngularJS和Cordova 3.4。在AngularJs run方法中,我调用了一个调用navigator.globalization.getPreferredLanguage()的服务 问题是,在angularjs启动期间,navigator.globalization未定义。我在用角度的承诺等待魔鬼日活动。全球化插件在第二次点击应用程序时开始工作,所以我想这是一个时间问题。地理定位插件在启动时运行良好,所以我不明白为什么会发生这种情况
angular.module('guiariumHtml5App', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ngAnimate',
'ui.bootstrap',
'google-maps',
'pascalprecht.translate'
])
.run(function($log, GlobalizationService) {
$log.info("App run");
GlobalizationService.getPreferredLanguage();
});
GlobalizationService.js
'use strict';
angular.module('guiariumHtml5App')
.factory('GlobalizationService', function($log, CordovaService) {
var serviceInstance = {
getPreferredLanguage: function() {
$log.info('getPreferredLanguage');
CordovaService.navigator().then(function(navigator) {
var onSuccess = function(language) {
setTimeout(function() {
alert(language.value);
}, 0);
//$translate.uses(language.value);
};
var onError = function() {
setTimeout(function() {
alert("Error getting language");
}, 0);
};
$log.info(navigator);
$log.info(navigator.language);
$log.info(navigator.userLanguage);
$log.info(navigator.globalization);
// Navigator.globalization is undefined
navigator.globalization.getPreferredLanguage(onSuccess, onError);
});
}
};
return serviceInstance;
});
'use strict';
angular.module('guiariumHtml5App')
.factory('CordovaService', function($q, $log) {
var d = $q.defer();
if(window.navigator) {
$log.info('navigator found on window');
d.resolve(window.navigator);
}
else {
document.addEventListener('deviceready', function(evt) {
$log.info('deviceready');
d.resolve(navigator);
});
}
return {
navigator: function() {
return d.promise;
}
};
});
CordovaService.js
'use strict';
angular.module('guiariumHtml5App')
.factory('GlobalizationService', function($log, CordovaService) {
var serviceInstance = {
getPreferredLanguage: function() {
$log.info('getPreferredLanguage');
CordovaService.navigator().then(function(navigator) {
var onSuccess = function(language) {
setTimeout(function() {
alert(language.value);
}, 0);
//$translate.uses(language.value);
};
var onError = function() {
setTimeout(function() {
alert("Error getting language");
}, 0);
};
$log.info(navigator);
$log.info(navigator.language);
$log.info(navigator.userLanguage);
$log.info(navigator.globalization);
// Navigator.globalization is undefined
navigator.globalization.getPreferredLanguage(onSuccess, onError);
});
}
};
return serviceInstance;
});
'use strict';
angular.module('guiariumHtml5App')
.factory('CordovaService', function($q, $log) {
var d = $q.defer();
if(window.navigator) {
$log.info('navigator found on window');
d.resolve(window.navigator);
}
else {
document.addEventListener('deviceready', function(evt) {
$log.info('deviceready');
d.resolve(navigator);
});
}
return {
navigator: function() {
return d.promise;
}
};
});
有人看到时间问题了吗