我有一份有收入和费用数据的公司列表。在我的应用中,可以显示收入或费用,并且可以通过查询过滤列表。
在我的控制器中,我有以下两只手表:
$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
注意selectedItem
和filteredCompanies
,而不是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
错误。
答案 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
);
现在设置一个小提琴。