2014-04-11 83 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

相關問題