AngulaJS$watch具有奇怪名称的变量

AngulaJS $watch variable with a weird name

本文关键字:变量 watch AngulaJS      更新时间:2023-09-26

出于这里不做的原因,我在$scope上有一个名为placements[]的变量。就像$scope.object['placements[]'] = { .. }一样.我想观察这个变量,但似乎没有办法观察这样的变量,因为$watch需要一个表达式。

在角度文档中没有任何关于如何处理这个问题的信息,所以如果有人有提示或技巧,那就太好了。我目前的解决方法是$scope.$watch('object', function() {} , true),但这远非完美的解决方案。

我是个笨蛋。显然,由于角度表达式是有效的javascript表达式,因此您可以这样做:

$scope.$watch("object['placements[]']", callback, true);

丑陋如地狱,但它有效

$scope.$watch可以接受函数或字符串。在这种情况下,传递一个返回要监视的对象的函数是有意义的

$scope.$watch(function() { return $scope['placements[]']; }, function(value) { ... });

这是假设您的范围对象如下所示:

{
    'placements[]': {...}
}