/ / angularjs: $ watch on a collection desencadena la excepción 'out of memory' - angularjs

angularjs: $ watch en una colección desencadena una excepción de "memoria insuficiente" - angularjs

Quiero que un botón se deshabilite siempre que la propiedad IsSelected de todos los objetos de una colección se establezca en false.

Para observar en profundidad una colección para tomar medidas cuando una propiedad cambia, yo hago:

$scope.$watch("messages", function (i) {
//do something
}, true);

Pero la colección es demasiado grande (en realidad solo tengo dos elementos, pero estos son objetos grandes) y corro en una excepción "sin memoria".

Entonces, ¿qué debo hacer en su lugar?

[EDITAR]

Siguiendo la sugerencia de @boxed:

        $scope.$watch(function () {
return $($scope.messages).map(function () {
return this.IsSelected;
});

}, function (e) {
//do something
});

Todavía es muy lento y me encuentro con el error:

  • Erreur d’exécution JavaScript: 10 $ digest () iteraciones alcanzadas. Abortando

Respuestas

2 para la respuesta № 1

El primer argumento de $ watch puede ser una función. En esa función, puede devolver una lista de todas las propiedades seleccionadas de IsSelected de todos los elementos.


0 para la respuesta № 2

puedes aumentar el límite de digestión https://docs.angularjs.org/api/ng/provider/$ rootScopeProvider

        $rootScopeProvider.digestTtl(25);