jcm*_*jcm 7 javascript angularjs angularjs-scope
我想在我的AngularJS应用程序中有一些事件监听器代码,它将适用于所有控制器的范围.
我基本上想要在某处定义以下内容:
document.addEventListener("online", onOnline, false);
document.addEventListener("offline", onOffline, false);
function onOnline() {
console.log("just got online event");
$scope.noNetwork = false;
}
function onOffline() {
console.log("just got offline event");
$scope.noNetwork = true;
}
Run Code Online (Sandbox Code Playgroud)
无论哪个控制器范围当前处于活动状态,它都将接收事件.
试试$rootScope
:
var app = angular.module("yourModule",[]);
app.run(function($rootScope){
document.addEventListener("online", onOnline, false);
document.addEventListener("offline", onOffline, false);
function onOnline() {
$rootScope.$apply(function(){
console.log("just got online event");
$rootScope.noNetwork = false;
});
}
function onOffline() {
$rootScope.$apply(function(){
console.log("just got offline event");
$rootScope.noNetwork = true;
});
}
});
Run Code Online (Sandbox Code Playgroud)
由于范围继承,$ rootScope的属性将由所有子范围继承.请注意,此事件发生在角度之外,$apply
在这种情况下使用也是必要的.您的所有子范围都可以$观察noNetwork
更改.像这样:
$scope.$watch('noNetwork',function(newValue){
//Handle your tasks here.
});
Run Code Online (Sandbox Code Playgroud)
另一种选择是创建一个服务来保存noNetwork
属性并将该服务注入您的控制器.
归档时间: |
|
查看次数: |
14621 次 |
最近记录: |