包含点的属性上的watchCollection

时间:2015-01-30 15:56:55

标签: javascript angularjs

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

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

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

但它不起作用

2 个答案:

答案 0 :(得分:3)

您可以使用

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

答案 1 :(得分:2)

如果集合定义如下:

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

然后

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

查看{em> obj 参数的{em>详细信息 $watchCollection。它可以是字符串或函数