Qual é a prioridade da diretiva ng-repeat você pode mudar isso?

Documentação Angular diz: –

A compilation do DOM é realizada pela chamada ao método $ compile (). O método atravessa o DOM e corresponde às diretivas. Se uma correspondência for encontrada, ela será adicionada à lista de diretivas associadas ao elemento DOM especificado. Uma vez que todas as diretivas para um dado elemento DOM tenham sido identificadas, elas são classificadas por prioridade e suas funções de compilation () são executadas.

A diretiva ng-repeat, acredito, tem uma prioridade menor que as diretivas personalizadas, em certos casos de uso, como o ID dynamic e a diretiva personalizada . O angular permite mexer com prioridade de diretivas para escolher a execução de uma antes da outra?

Sim, você pode definir a prioridade de uma diretiva. ng-repeat tem uma prioridade de 1000 , que na verdade é maior que as diretivas personalizadas (a prioridade padrão é 0). Você pode usar este número como um guia de como definir sua própria prioridade em suas diretivas em relação a ela.

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

prioridade – Quando há várias diretivas definidas em um único elemento DOM, às vezes é necessário especificar a ordem na qual as diretivas são aplicadas. A prioridade é usada para classificar as diretivas antes que suas funções de compilation sejam chamadas. Prioridade é definida como um número. Diretivas com maior prioridade numérica são compiladas primeiro. A ordem das diretivas com a mesma prioridade é indefinida. A prioridade padrão é 0.

O AngularJS encontra todas as diretivas associadas a um elemento e as processa. Esta opção diz ao angular para ordenar diretivas por prioridade, de modo que uma diretiva com maior prioridade será compilada ou vinculada antes de outras. A razão para ter esta opção é que podemos executar a verificação condicional na saída da diretiva anterior compilada.

No exemplo a seguir, primeiro adicione o botão e somente depois de adicionar a class ao botão atual:

Fiddle Demo

 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'); } } }; });