Угловая интерполяция, ng-bind и ng-translate неожиданное поведение

Я вижу неожиданные различия в поведении при использовании угловой интерполяции {{ blah }} в отличие от ng-bind='blah' при использовании ng-translate. Так что, учитывая действительно простой контроллер с

$scope.name = "Angular"

следующее прекрасно работает с использованием интерполяции и ng-bind.

<div>Interpolation : Hello {{ name }}</div>
<div>ng-bind       : Hello <span ng-bind="name"/></div>

Выведение

Interpolation : Hello Angular
ng-bind : Hello Angular

Теперь введите ng-translate, сначала настройте простую таблицу перевода.

$translateProvider.translations('en', {
  'WELCOME-INTERPOLATE': 'Hello {{ name }}',
  'WELCOME-BIND': 'Hello <span ng-bind="name"/>'
});

а потом

<span translate translate-values="{name: name}">WELCOME-INTERPOLATE</span>
<span translate translate-values="{name: name}">WELCOME-BIND</span>

который производит

Hello Angular                     <-- This is interpolate
Hello                             <-- This is ng-bind and **fails**

и затем, добавив "translate-compile", что, как я понимаю, устраняет необходимость в "translate-values" и дает "translate" доступ к его родительской области, тот же HTML с "translate-compile" заменяет "translate-values"

<span translate translate-compile>WELCOME-INTERPOLATE</span>
<span translate translate-compile>WELCOME-BIND</span>

дает противоположный результат

Hello                             <-- This is interpolate and **fails**
Hello Angular                     <-- This is ng-bind

Смотри мой план, например

1 ответ

Это было решено в github:

Все работает как положено.

Либо вы пропустили значение, либо HTML (или шаблоны, которые необходимо проанализировать) пропустил флаг компиляции.

Смотрите планкр

https://github.com/angular-translate/angular-translate/issues/987

Другие вопросы по тегам