首先,我建议您收听在线/离线事件。
您可以在 AnguarJS 中这样做:
var app = module('yourApp', []);
app.run(function($window, $rootScope) {
$rootScope.online = navigator.onLine;
$window.addEventListener("offline", function() {
$rootScope.$apply(function() {
$rootScope.online = false;
});
}, false);
$window.addEventListener("online", function() {
$rootScope.$apply(function() {
$rootScope.online = true;
});
}, false);
});
注意:我在$apply
方法中包装了根范围变量的更改,以通知 Angular 某些内容已更改。
之后,您可以:
在控制器中:
$scope.$watch('online', function(newStatus) { ... });
在 HTML 标记中:
<div ng-show="online">You're online</div>
<div ng-hide="online">You're offline</div>
这是一个工作 Plunker:http ://plnkr.co/edit/Q3LkiI7Cj4RWBNRLEJUA?p=preview
其他解决方案可能是广播在线/离线事件。但在这种情况下,您需要在加载时初始化当前状态,然后订阅事件。