我的一个Angular模型可以观看另一个吗?

时间:2014-04-11 01:01:47

标签: angularjs

我有一份有收入和费用数据的公司列表。在我的应用中,可以显示收入或费用,并且可以通过查询过滤列表。

在我的控制器中,我有以下两只手表

$scope.$watch('query', function(q) {
  $scope.filteredCompanies = $scope.companies
    .filter(function(c) { return q ? c.name.toLowerCase().indexOf(q.toLowerCase()) > -1 : true; });

  $scope.chartData = {
    name: 'companies',
    children: $scope.filteredCompanies.map(function(c) { 
      return {name: c.name, size: c[$scope.selectedItem]};
    })
  };
});

$scope.$watch('selectedItem', function(i) {
  $scope.chartData = {
    name: 'companies',
    children: $scope.filteredCompanies.map(function(c) { 
      return {name: c.name, size: c[i]};
    })
  };
});

我的问题是,我可以告诉chartData注意selectedItemfilteredCompanies,而不是query吗?我尝试了以下方法:

$scope.$watch('[filteredCompanies, selectedItem]', function(arr) {
  $scope.chartData = {
    name: 'companies',
    children: arr[0].map(function(c) { 
      return {name: c.name, size: c[arr[1]]};
    })
  };
});

但得到10 digests iterations reached错误。

1 个答案:

答案 0 :(得分:1)

不确定您正在使用的角度版本..但1.2的版本是..

$scope.$watchCollection('[filteredCompanies, selectedItem]', 
    function(newValues, oldValues){
    $scope.chartData = {
      name: 'companies',
      children: arr[0].map(function(c) { 
         return {name: c.name, size: c[arr[1]]};
      })
    };
});

我还认为第三个参数是真的有效:

$scope.$watch('[filteredCompanies, selectedItem]', 
    function () {
    }, 
    true
 );

现在设置一个小提琴。