El cambio del valor del modelo de AngularJS en un controlador desencadena la actualización del modelo en otros
Ok, actualizo el ejemplo para evitar el problema del bucle, así que volviendo a la pregunta original, todavía se volverán a calcular los objetos del modelo B.
En este ejemplo:http://jsfiddle.net/qn2Wa/
<div ng-app>
<div ng-controller="A"><input ng-model="m">
{{a()}}
</div>
<div ng-controller="B"><input ng-model="m">
{{b()}}
</div>
</div>
JS
function A($scope) {
$scope.m='a';
var counter = 0;
$scope.a = function(){
console.log("A " + counter++);
return $scope.m;
}
}
function B($scope) {
$scope.m='b';
var counter = 0;
$scope.b = function(){
console.log("B " + counter++);
return $scope.m;
}
}
tan pronto como cambie el valor de entrada en el controlador A, llamará b () que está en un controlador totalmente separado. ¿Por qué recalcularía los objetos del modelo en los otros controladores? Hay alguna manera de evitar esto?
Si ve el registro de la consola, puede ver que B se imprime cada vez que escribe algo en el campo de entrada A, que se encuentra en un controlador y ámbito totalmente independientes.
SOLO PARA REFERENCIA Guardo el código original para la pregunta aquí. Tiene un error, ya que está actualizando el modelo en la llamada de función, como lo señalan algunos de los comentarios, esto se soluciona en el código anterior. El error podría ser movido a una pregunta separada.
<div ng-app>
<div ng-controller="A"><input ng-model="m">
{{a()}} - {{counter}}
</div>
<div ng-controller="B"><input ng-model="m">
{{b()}} - {{counter}}
</div>
</div>
JS
function A($scope) {
$scope.m='a';
$scope.counter = 0;
$scope.a = function(){
$scope.counter++;
return $scope.m;
}
}
function B($scope) {
$scope.m='b';
$scope.counter = 0;
$scope.b = function(){
$scope.counter++;
return $scope.m;
}
}