start array angularjs angularjs-directive angularjs-ng-repeat ng-repeat

angularjs - array - ng-repeat select



¿Qué es la ''prioridad'' de la directiva ng-repeat? ¿Puedes cambiarla? (2)

AngularJS encuentra todas las directivas asociadas con un elemento y lo procesa. Esta opción le dice a las directivas de clasificación angular por prioridad, por lo que una directiva que tenga mayor prioridad se compilará o vinculará antes que otras. La razón para tener esta opción es que podemos realizar una verificación condicional de la salida de la directiva anterior compilada.

En el ejemplo siguiente, primero agregue el botón y solo después de agregar la class al botón actual:

Demo Fiddle

App.directive(''btn'', function() { return { restrict: ''A'', priority: 1, link: function(scope, element, attrs) { element.addClass(''btn''); } }; }); App.directive(''primary'', function() { return { restrict: ''A'', priority: 0, link: function(scope, element, attrs) { if (element.hasClass(''btn'')) { element.addClass(''btn-primary''); } } }; });

La documentación angular dice: -

La compilación del DOM se realiza mediante la llamada al método $ compile (). El método atraviesa el DOM y coincide con las directivas. Si se encuentra una coincidencia, se agrega a la lista de directivas asociadas con el elemento DOM dado. Una vez que se han identificado todas las directivas para un elemento DOM dado, se ordenan por prioridad y se ejecutan sus funciones compilación ().

La directiva ng-repeat creo que tiene una prioridad menor que las directivas personalizadas, en ciertos casos de uso, como la identificación dinámica y la directiva personalizada . ¿El angular permite retocar con la prioridad de las directivas para elegir la ejecución de uno antes que el otro?


Sí, puede establecer la prioridad de una directiva. ng-repeat tiene una prioridad de 1000 , que en realidad es más alta que las directivas personalizadas (la prioridad predeterminada es 0). Puede usar este número como guía para establecer su propia prioridad en sus directivas en relación con esto.

angular.module(''x'').directive(''customPriority'', function() { return { priority: 1001, restrict: ''E'', compile: function () { return function () {...} } } })

prioridad : cuando hay varias directivas definidas en un solo elemento DOM, a veces es necesario especificar el orden en que se aplican las directivas. La prioridad se usa para ordenar las directivas antes de que se llame a sus funciones de compilación. La prioridad se define como un número. Las directivas con mayor prioridad numérica se compilan primero. El orden de las directivas con la misma prioridad no está definido. La prioridad predeterminada es 0.