AngularJS-Mecánica de $ scope. $ Watch-¿Es solo un patrón de observador?



ng switch angular 6 (1)

No es el patrón del observador. Con el patrón del observador, el objeto observado explícitamente notifica a sus observadores cuando cambia.

El mecanismo de reloj AngularJS compara el resultado de la evaluación de la expresión antes y después de que se haya manejado un evento, y si el valor de la expresión ha cambiado, notifica a los observadores. Si la ejecución del observador hace que el valor de la expresión se modifique de nuevo, el vigilante se llama de nuevo, etc., hasta que se alcanza un límite de 10 ciclos.

Esto se explica en la documentación $ scope .

https://ffff65535.com

Tengo algo de fábrica:

.factory("someFactory", function() {

  var someFactory = {};

  someFactory.objects = [
    { name: "obj1" },
    { name: "obj2" }
  ];

  return someFactory;
}

Y algún controlador, que mira los cambios de los nombres de los objetos de esta fábrica:

.controller("someController", ["someFactory", "$scope", function($scope, someFactory) {

  for (var i = someFactory.values.length - 1; i >= 0; i--) {
    $scope.$watch("someFactory.values[" + i + "].name", function(newVal, oldVal, scope) {
        if(newVal !== undefined) {
            // do something
        }
  });

}]);

Me sorprendió que esto funcione realmente y no tengo que escribir el código para cada objeto en mi fábrica por separado. Supongo que estoy sorprendido por mi falta de comprensión de lo que $ scope $ $ realmente hace. Si alguien me preguntara, le diría que es como el buen patrón de observadores. ¿Sería eso una explicación apropiada?





angularjs-controller