77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
/*
|
|
* É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;
|
|
});
|
|
|
|
}]);
|