我尝试使用 PhoneGap 和 AngularJS 制作一个可以在线和离线使用的应用程序(适用于 Android 设备)。
如果设备离线,我想从本地数据库获取人员列表,如果设备在线,我想使用 $http 从 Web 服务获取人员列表。但是当设备在线时,它不起作用,不调用网络服务。
我认为问题在于PhoneGap 异步方法。事实上,在离线模式下,它可以工作,但我需要使用 $scope.$apply 来更新我的视图。但这不适用于 $http...
有人知道如何在异步方法中使用 $http 吗?
function ListCtrl ($scope, $http){
$scope.list = [];
$scope.Id = 2;
$scope.init = function(){
document.addEventListener("deviceready", getList, false);
}
$scope.getAll = function(){
$http({
url: 'http://10.0.0.2:63414/myWebMethod/' + $scope.Id,
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).success(function(data) {
$scope.list = data;
});
}
function getList(){
var db = window.openDatabase("Database", "1.0", "list", 200000);
var network = navigator.connection.type;
if (network == "none"){
// local database transaction works fine
} else {
$scope.getAll();
}
$scope.$apply();
}
$scope.init();
}