AngularJS: интерполировать строку в шаблоне после директивы - PullRequest
0 голосов
/ 28 января 2020

Я применяю перевод к шаблонам и использую для него директиву "переводить" следующим образом:

<span translate>Hello {{name}}!</span>` 

В отдельном файле de. json для немецкого языка у меня есть пары ключ-значение перевода, такие как {"Hello {{name}}!": "Hallo {{name}}!"}. Во время выполнения моя директива "translate" предполагает замену содержимого внутри "span" на "Hallo {{name}}!" а затем AngularJS необходимо интерполировать строку шаблона.

К сожалению, сегодня все работает наоборот: 1-й анг JS интерполирует, а затем моя директива применяется.

Вопрос: есть ли способ в Ang JS настроить мою директиву, которая будет применяться ДО AngularJs Запускает интерполяцию?

1 Ответ

1 голос
/ 31 января 2020

Из AngularJS Руководство по интерполяции :

interpolateDirective имеет приоритет 100 и настраивает часы в функции preLink`

Из AngularJS $ скомпилированных документов :

priority

При наличии нескольких директив определяется в одном элементе DOM, иногда необходимо указать порядок, в котором применяются директивы. Приоритет используется для сортировки директив перед вызовом их функций компиляции. Приоритет определяется как число. Директивы с большим числовым приоритетом составляются первыми. Функции предварительной ссылки также выполняются в порядке приоритета, но функции последующей ссылки выполняются в обратном порядке. Порядок директив с одинаковым приоритетом не определен. Приоритет по умолчанию - 0.

. Библиотека Angular Translate имеет функцию directivePriority(priority) в $ translateProvider API , которая позволяет настроить директиву для запуска на более высокий приоритет, как 101. Это должно заставить ваши директивы translate работать до интерполяции.

...