监视包含点的属性上的集合

watchCollection on property containing a dot

本文关键字:集合 属性 监视 包含点      更新时间:2023-09-26

我们有一个名称包含点 (.) 的属性。我知道这并不常见,但原因是这些是自动构建的,您可能会将其视为 key1.key2。

现在,此属性"key1.key2"上的监视集合失败,因为它被解释为对象 key1 的属性 key2。Angular watchCollection 的第一个参数必须是表达式。我们也尝试过:

$scope.$watchCollection ('["key1.key2"]', ...);

但它不起作用

您可以使用

$scope.$watchCollection ('this["key1.key2"]', ...);

如果集合定义如下:

$scope['key1.key2'] = {
  a: 1,
  b: 2,
  c: 3
};

然后

$scope.$watchCollection(function() {
  return $scope['key1.key2'];
}, function(newCollection) {
  console.log(newCollection);
});

有关$watchCollection,请参阅 obj 参数的详细信息。它可以是字符串或函数