używam dwóch $watches
w moim kontrolera, które mają brać oko na tych dwóch obiektów:
$scope.gastos = {
name: "Gastos mensuales",
data: [0,0,0,0,0,0,0,0,0,0,0,0],
labels: ["Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre",
"Noviembre", "Diciembre"]
};
$scope.ganancias = {
name: "Ganancias mensuales",
data: [0,0,0,0,0,0,0,0,0,0,0,0],
labels: ["Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre",
"Noviembre", "Diciembre"]
};
dwa wykresy (z wtyczek kątowych-Charts.js i wykresów) odczytać z nich dane. Umieściłem wykresy w dyrektywach niestandardowych, które otrzymują dane z atrybutu i działają poprawnie.
Problemem jest to, że chcę, aby utworzyć kolejny wykres, który czyta inny obiekt, który jest równy nich, ale oblicza To dane w tej metodzie:
function calcularBeneficios(){
var data = [];
for(var i=0;i<12;i++){
data[i] = $scope.ganancias.data[i] - $scope.gastos.data[i];
}
console.log("FUNCTION DATA: "+data);
return data;
}
Są to zegarki (próbowałem zarówno oglądanie object
i object.data
zmienna):
$scope.$watch("gastos", function(){
$scope.beneficios.data = calcularBeneficios();
console.log("SCOPE: "+$scope.beneficios.data);
});
$scope.$watch("ganancias", function(){
$scope.beneficios.data = calcularBeneficios();
console.log("SCOPE: "+$scope.beneficios.data);
});
To nie działa. Widzisz wszystkie console.logs
? Widzę tylko "SCOPE" console.log
, raz (nawet nie dwa razy dla ganancias
). Kiedy zmieniam dane w niektórych danych wejściowych, które są powiązane z tymi dwoma obiektami, wszystko działa (wykresy są aktualizowane w czasie rzeczywistym), ale wykres beneficios
nie, jak również te zegarki po prostu nie działają.
Czy robię coś złego w tych dwóch zegarkach?
w 'console.log (zakres: "")', '$ scope.beneficios.data' ma być wydrukowany z jego zaktualizowaną wartością? – Rhumborl
Możliwy duplikat [$ watch nie jest wyzwalany przy zmianie tablicy] (http: // stackoverflow.com/questions/15363259/watch-not-being-triggered-on-array-change) – mido