Угловая интерполяция, 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