【发布时间】:2014-12-07 20:50:33
【问题描述】:
我正在开发一个签到应用程序,它使用 SQL 服务器数据库来存储和获取人员 如果应用在线,并在离线时使用本地存储来存储人员,一旦重新在线,就会将这些更改推送到数据库中。
my controller currently goes like this
function DemoController($scope,localStorageService,$http,$resource,$interval)
{
$scope.online = "";
$scope.checkConnection=function()
{
check=window.navigator.onLine;
if(!check)
{
$scope.online="offline";
return false;
}
else
{
$scope.online="online";
return true;
}
}
if($scope.checkConnection() == true){
$scope.Get = function(){
$http.get(url).success{function(res)
{
$scope.People = res;
$scope.setPeople();
}
}
//基本上就是那些人的编辑和删除功能
$scope.setPeople = function() {};
$scope.deletePeople = function(){};
}
else if ($scope.checkConnection == false)
{
// use same methods/functions but with local storage
$scope.pushAll = function (){ %http.put(url)}
//here is the part i do not understand
if checkConnection switches from offline to online
{
$scope.pushAll();
}
}
$scope.intervalCheck = function()
{
var intervalPromise;
intervalPromise = $interval($scope.checkConnection(), 250);
};
$scope.intervalCheck();
}
另一个问题是,即使它从在线切换到离线或反之亦然,我也不会切换它使用的方法(在线/离线方法)。 我不确定是否有正确的方法来实际写这个,但我希望有,如果这太模糊了,我可以编辑更多细节的帖子。
【问题讨论】:
-
您是否尝试在 onLine 值上使用观察者?应该可以使用 Angular 观察者自动切换。还是不是你的问题?
-
@sam Watchers 需要一个此 web 应用程序不使用的输入(在控制器本身之外没有任何值会更改以使观察者触发。),所以使用观察者对我来说真的没有任何作用我试着走那条路,除非我错过了什么。
-
这篇文章似乎回答了你的问题stackoverflow.com/questions/3181080/…。似乎没有任何解决方案可以在浏览器离线时自动切换。但是,没有什么能阻止您在每次请求检查连接性并采取相应措施之前进行测试。不是最好的解决方案,而是一个可行的解决方案。
标签: html asp.net angularjs web-applications offline-mode