2016-07-29 3 views
0

Я использую директиву углового перевода в своем приложении. Теперь я переводил ключ, который возвращает строку.Как использовать директиву углового перевода с ограничением Фильтр

<div translate="TRANSLATION_KEY"></div> 

предположим, что я получил перевод в виде строки, как apply online for this course.

Теперь я хочу, чтобы эта строка ограничивала только 12 символов, подобных этому apply online....

так я сделал, как этот

<div {{translate="TRANSLATION_KEY | limitTo:12 }}"></div> 

, но это не правильно так , как я могу использовать limitTo фильтр, когда выражение исходит из самого перевода.

Также используется translate-values и translate-compile.

ответ

1

Предельное строку с limitTo фильтром

{{limitTo_expression | limitTo: предел: начало}}

https://docs.angularjs.org/api/ng/filter/limitTo

{{ "My String Is Too Long" | limitTo: 9 }} 

Какой будет результат:.

My String 

Или используйте следующий подход (не используя translate директиву

<span>{{TRANSLATION_KEY|translate|limitTo:9}}</span> 

https://angular-translate.github.io/docs/#/guide/04_using-translate-filter

О другом вопросе относительно директивы angular-translate.

перевести директиву ожидает дополнительный translate-values атрибут можно использовать, чтобы передать некоторые значения через него. Все, что вам нужно: do - объединить директиву с атрибутом translate-values.

Вы можете передать объектный литерал как строку, выражение или, если значение является динамическим, директива интерполяции. Независимо от того, что вы проходите , он получает внутреннюю оценку и анализируется с помощью фильтра пересылки, поэтому - это простой старый объект JavaScript, который передается в $ translate service.

<ANY translate="TRANSLATION_ID" 
    translate-values='{ username: "PascalPrect"}'></ANY> 

или

<ANY translate="TRANSLATION_ID" 
    translate-values="{ username: someScopeObject.username }"></ANY> 

или

<ANY translate="TRANSLATION_ID" 
    translate-values="{{translationData}}"></ANY> 

Сообщение компиляции

Начиная с версии 2, транс сама по себе может быть обработана в контексте текущей области (с использованием $compile). Это означает, что любая директива , используемая в самой стоимости перевода, теперь будет работать как ожидаемый .

Такое поведение может быть включен в директиву:

<ANY translate="TRANSLATION_ID" translate-compile></ANY> 

В дополнение к этому, вы также можете включить функцию в глобальном масштабе с ...

$translateProvider.usePostCompiling(true); 

... и даже тогда вы можете отключить эту функцию снова в соответствии с директивой:

<ANY translate="TRANSLATION_ID" translate-compile="false"></ANY> 
+0

Я хочу использовать фильтр, когда выражение исходит из самого перевода. Я редактировал свой пост, пожалуйста, взгляните на него. –

+0

См. Мой ответ, используя ' {{TRANSLATION_KEY | translate | limitTo: 9}}'. Подробнее см. На странице https://angular-translate.github.io/docs/#/guide/04_using-translate-filter –

+0

Спасибо @ daan.desmedt, вот что я искал. –