2014-04-11 46 views
0

我有一份有收入和成本数据的公司名单。在我的应用程序中,可以显示收入或成本,并且可以通过查询过滤列表。我的一个Angular模型可以看另一个吗?

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

$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

不知道你使用的是什么版本的角..但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 
); 

设置现在拿起小提琴。

+0

'watchCollection'是它,谢谢队友! –

+0

虽然我有你 - 有没有更多的说明性的方式来说'chartData'依赖于'filteredCompanies'和'selectedItem',或者这是我应该做这种事情的方式吗? –

+0

它真的很难推断你想要做什么...我想我需要知道什么是selectedIndex,以及如何使用chartData.children .... – Nix

相关问题