/* * Énoncé: * * Implémenter les contrôleurs MainCtrl, ACtrl et BCtrl afin que les modifications des champs * dans le controleur MainCtrl soient répliqués dans les champs respectifs de ACtrl et BCtrl, * et inversement. * * Indices: * - Attention à l'héritage des $scope * - Penser à l'utilisation de $broadcast, $emit et $watch */ var Exo = angular.module('Exo', []); Exo.controller('MainCtrl', ['$scope', function($scope) { $scope.numberA = 5; $scope.numberB = 2; $scope.$watch('numberA', function(newVal) { $scope.$broadcast('numberAChanged', {value: newVal}); }); $scope.$watch('numberB', function(newVal) { $scope.$broadcast('numberBChanged', {value: newVal}); }); $scope.$on('numberAChanged', function(evt, data) { $scope.numberA = data.value; }); $scope.$on('numberBChanged', function(evt, data) { $scope.numberB = data.value; }); }]); Exo.controller('ACtrl', ['$scope', function($scope) { $scope.$watch('numberA', function(newVal) { $scope.$emit('numberAChanged', {value: newVal}); }); $scope.$watch('numberB', function(newVal) { $scope.$emit('numberBChanged', {value: newVal}); }); $scope.$on('numberAChanged', function(evt, data) { $scope.numberA = data.value; }); $scope.$on('numberBChanged', function(evt, data) { $scope.numberB = data.value; }); }]); Exo.controller('BCtrl', ['$scope', function($scope) { $scope.$watch('numberA', function(newVal) { $scope.$emit('numberAChanged', {value: newVal}); }); $scope.$watch('numberB', function(newVal) { $scope.$emit('numberBChanged', {value: newVal}); }); $scope.$on('numberAChanged', function(evt, data) { $scope.numberA = data.value; }); $scope.$on('numberBChanged', function(evt, data) { $scope.numberB = data.value; }); }]);