2016-01-11 3 views
1

Как вы лучше всего переводите угловые правила бутстрапа, такие как uib-tab и uib-tooltip без использования фильтров?Перевод угловых указателей бутстрапа с использованием углового перевода без фильтров?

Фильтры добавить много наблюдателей, так что я не хочу, чтобы это нравится:

<uib-tab heading="{{'A. Manually add emails'|translate}}" is-open="true"> 

Есть ли способ соседний сделать это?

+0

«Фильтры добавить много наблюдателей», где вы узнали об этом ? – miensol

+0

https://github.com/angular-translate/angular-translate/wiki/Getting-Started –

+0

Здесь нет наблюдателя, вы используете постоянную строку –

ответ

-1

Вы можете использовать один раз привязки, где вы уверены, что значение обыкновение меняться: не

{{::name | translate}} 

http://plnkr.co/edit/NS6XFZGgflWsR9Zk9d5L?p=preview

Но если вы используете фильтр для постоянной строки - не наблюдатель будет создан.

+0

, это не работает, потому что угловые фильтры имеют более высокий приоритет и выиграли ' t будет переведен после того, как директива создаст html. –

+0

да? вы можете видеть в plunk, что он работает –

+0

у вас нет угловых указателей бутстрапа в этом плунжере. Пожалуйста, прочтите название вопроса! –

0

Хотя все предыдущие комментарии являются правильными, вот альтернатива, если вы действительно хотите, чтобы избежать фильтра:

function TranslateAttr($translate) { 
    return { 
    restrict: 'A', 
    link: { 
     pre: function (scope, elem, attrs) { 
     var attribute = attrs.translateAttr, 
      attributeValue = attrs[attribute]; 

     if (attributeValue) { 
      $translate(attributeValue).then(function (translation) { 
      attrs.$set(attribute, translation[attributeValue]); 
      }); 
     } 
     } 
    } 
    }; 
} 

Теперь, чтобы использовать его в вашем примере:

<uib-tab heading="{{'A. Manually add emails'}}" is-open="true" translate-attr="heading"> 
0

Вы также можете использовать $ перевод сервис с мгновенный метод внутри вашего контроллера, чтобы получить немедленный явный перевод без каких-либо $ filter, как этот: $ translate.instant (ваш ключ), возвращает строку/объект зависит от входных данных, см: $translate

.controller('MyCtrl', function($scope, $translate){ 
    ... 
    $scope.translatedTooltip = $translate.instant('tooltip-key'); 
    ... 
}); 

<uib-tab heading="{{translatedTooltip}}" is-open="true"> 
Смежные вопросы