gpt4 book ai didi

javascript - $rootScope 并不每次都更新

转载 作者:行者123 更新时间:2023-12-03 08:54:51 25 4
gpt4 key购买 nike

当互联网不可用时,我想在每个页面上显示互联网不可用栏。

我正在使用 Ionic 框架,因此决定将代码保留在 menu.html 上

这是我的菜单 html 代码

<div class="cfg-internet-error text-center text-bold" ng-hide="$root.internet_active">Internet not available</div>

我正在 .run 上设置 $rootScope

 $rootScope.internet_active = navigator.onLine;
window.addEventListener("online", function() {
$rootScope.$broadcast('isOnline', true);
$rootScope.internet_active = true;
}, true);

window.addEventListener("offline", function() {
$rootScope.$broadcast('isOnline', false);
$rootScope.internet_active = false;
}, true);

发生的情况是,如果互联网断开连接,它会显示该栏,但当它再次回来时,它不会隐藏它,我也尝试过 ng-if ,当我更改页面时,它会隐藏回来,所以我想要真实的当值发生变化时,数据与 View 的绑定(bind)时间也应该改变 View 值

最佳答案

两个注意事项:

  1. 使用 Angular 包装器 $window .
  2. 区分开发(PC)和生产(原生)环境。

例如:

var state,
online = 'online',
offline = 'offline';

if (ENV === 'production') {
if ($cordovaNetwork.isOnline()) {
state = online;
}
if ($cordovaNetwork.isOffline()) {
state = offline;
}
}
else if (ENV === 'development') {
if (navigator.onLine) {
state = online;
}
else {
state = offline;
}
}

addEventListener(online);
addEventListener(offline);

function addEventListener(status) {
$window.addEventListener(status, function () {
state = status;
if (state === online) {
// $rootScope.$broadcast("network online");
}
else if (state === offline) {
// $rootScope.$broadcast("network offline");
}
}, false);
}

Cordova 插件 url .

关于javascript - $rootScope 并不每次都更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com