Я использую широковещательную рассылку, чтобы проверить мой контроллер, если директива изменяет переменную.
Вот как запускается моя трансляция (работает):
$rootScope.$broadcast(EVENTS.RELOAD, scope.values);
И вот я управляю трансляцией в моем контроллере:
$scope.$on(EVENTS.RELOAD, reloadCurves);
function reloadCurves(e, data){
console.log(exp.curves);
/* console.log('reload asked : ', data); */
exp.plate.experiments.forEach(function (element) {
if (data[element.well] === true){
exp.curves[element.well] = element;
}
});
console.log(exp.curves);
}
А после в другой директиве я проверяю, изменяется ли моя переменная кривых с помощью $ watch. Эти часы тоже работают, когда я меняю переменную вручную, часы срабатывают.
Моя проблема странная, в моей reloadCurves у меня есть два console.log, и они всегда показывают один и тот же объект, но обычно первый console.log должен выводить пустой массив (или массив, отличный от второго console.log) а второй - результат foreach.
Итак, подумайте, переменная кривых не изменилась, и не бросайте часы моей второй директивы.
Что делать?
РЕДАКТИРОВАТЬ:
Я изменяю свои reloadCurves на это:
function reloadCurves(e, data){
console.log('reload asked : ', data);
console.log(exp.curves);
// Récuperer toute les experiments cochés (celle en true)
var tab = [];
exp.plate.experiments.forEach(function (element) {
if (data[element.well] === true){
tab[element.well] = element;
}
});
exp.curves = tab;
console.log(exp.curves);
}
Так что теперь первый и второй console.log отличаются, но $ watch на кривых не выдает