我有一个Angular / Ionic应用程序,它使用Network Phonegap API来检查网络连接。我已经定义了事件处理程序来处理在线/离线事件。发生这些事件时,我通过$rootScope
$broadcast
方法广播事件。在我的控制器中,我使用$on
方法监听此事件并更新范围属性。 scope属性绑定到视图以在没有Internet连接时禁用按钮。问题是即使触发了离线/在线事件(在我的Samsung S3上测试),也没有设置范围属性。
为清晰起见,我的代码是:
document.addEventListener("offline", function() {
//broadcast offline event to controllers
$rootScope.$broadcast("networkStatusChange", 'Offline');
}, false);
document.addEventListener("online", function() {
$rootScope.$broadcast("networkStatusChange", 'Online');
}, false);
我的控制器
$scope.$on('networkStatusChange', function(event, status) {
$scope.networkInfo.isOffline = status === 'Offline' ? true : false;
});
$scope.networkInfo = {}; //bound to view to disable button is isOffline is true
我的观点
<p class="error" ng-show="networkInfo.isOffline">No Internet Connection.</p>
当我打开/关闭手机的互联网连接时,我不知道为什么networkInfo.isOffline
属性没有改变。
答案 0 :(得分:0)
我认为你必须确保你的addEventListener函数中的其他函数调用它。 有一个例子test demo
答案 1 :(得分:0)
您很可能需要在子功能中调用$scope.$apply()
:
$scope.$on('networkStatusChange', function(event, status) {
$scope.networkInfo.isOffline = status === 'Offline' ? true : false;
$scope.$apply();
});