如何在 angularjs 服务中包装对象(并观察此对象的更改)

How do I wrap an object in an angularjs service (and watch this object for changes)?

本文关键字:对象 观察 angularjs 服务 包装      更新时间:2023-09-26

我想知道如果Javascript对象不是"角度的一部分",我将如何观察该对象的更改。例如,我有一个模块,我们称之为watchModule,可以直接在窗口中访问。我现在正在做的事情(我肯定是错的,这就是我寻求帮助的原因!)是这样的

angular.module('test', [])
.factory('WatchModule', function(){
    return watchModule;
})

我遇到了一个问题:

这个对象(watchModule)在DOM ready上实例化。因此,当 angularJS 首次建立此服务时,它返回 undefined。也许作为这个的直接结果,angularJS在定义对象后不会继续更新。

我希望观看这样的物体是可能的。我正在做的项目是一个WebGL应用程序,对于某些东西来说,成为angular的"成员"并没有太大的意义。我宁愿观察它们以检索一些值。

Angular 可以监视附加到根或某个控制器上scope的对象。它还可以通过在摘要周期中调用函数来监视函数。

在您的情况下,这意味着如果您想监视watchModule则必须将其附加到范围或创建一个包装它的函数。

$scope.watched=WatchModule;
   $scope.$watch('watched',function(newValue,oldValue) {
});

如果这不起作用,那么情况可能是角度正在监视的参考不是您正在使用的参考。如果要监视 WatchModule 的子属性,请传入一个额外的参数以作为对象相等的true进行监视。