在angularJs中可以观看全局变量吗?
我从旧版代码中设置了一个window.test变量,然后我需要观察该变量以了解它是否存在。
我尝试过类似的东西
$window.$watch("test" , function(n,o){ //some code here... }
有些。您可以包含Angular $window服务(如文档所述,比window直接访问更安全):
$window
window
app.controller('myCtrl', function ($scope,$window) {...}
然后使用watch函数作为您的第一个参数,$watch如下所示:
$watch
$scope.$watch( function () { return $window.test }, function(n,o){ console.log("changed ",n); } );
演示小提琴
但是请注意,只有在$watch触发Angular进行$ digest操作后,才会执行。一种可行的方法是将遗留代码包装为$scope.$apply或$digest在遗留代码被提取后触发一次。这是有关此的一些很好的文档。
$scope.$apply
$digest
基本上,只要更改发生在angular之外(例如,当jQuery导致更改时这是一个常见问题),就必须告诉Angular看看是否发生了更改。这是Angular保持合理性能的一种方式。