2015-09-24 12 views
3

Я использую угловой переводчик для перевода моих кнопок и меток html, проблема в том, что когда я использовал внутри placeholder, я получаю ненужные символы для французского языка. Но то же самое хорошо работает в теге span. что было бы проблемой с заполнителем.angularjs translate placeholder

<input data-ng-model="vm.search" class="form-control" type="search" 
          ng-attr-placeholder="{{'resources.contacts-organisations-searchplaceholder' | translate }}..."> 

enter image description here

же материал работает с пролетом

<span translate="resources.contacts-organisations-searchplaceholder"></span> 

enter image description here

ответ

0

Вы уверены, что синтаксис является правильным? Похоже, {{'resources.contacts-organisations-searchplaceholder' | translate }} пропустит строку resources.contacts-organisations-searchplaceholder, а не строку в этом объекте

+0

Нет, я положил его право. Я добавил снимок экрана, пожалуйста, посмотрите – Velkumar

+0

Я решил проблему, я изменил код ниже $ translateProvider.useSanitizeValueStrategy (null); ранее это было как $ translateProvider.useSanitizeValueStrategy ('sanitize'); – Velkumar

3

Простите немного поздно: Но я создал для вас эту директиву, которая решит вашу проблему.

app.directive('ngBindPlaceholder', ['$sce', '$parse', '$compile', function($sce, $parse, $compile){ 
    return { 
    restrict: 'A', 
    compile: function ngBindHtmlCompile(tElement, tAttrs) { 
     var ngBindHtmlGetter = $parse(tAttrs.ngBindPlaceholder); 
     var ngBindPlaceholderWatch = $parse(tAttrs.ngBindPlaceholder, function getStringValue(value) { 
     return (value || '').toString(); 
     }); 
     $compile.$$addBindingClass(tElement); 

     return function ngBindHtmlLink(scope, element, attr) { 
     $compile.$$addBindingInfo(element, attr.ngBindPlaceholder); 

     scope.$watch(ngBindPlaceholderWatch, function ngBindWatchAction() { 
      // we re-evaluate the expr because we want a TrustedValueHolderType 
      // for $sce, not a string 
      element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope)) || ''); 
      var plc = element.text(); 
      element.attr('placeholder',plc); 
     }); 
     }; 
    } 
    }; 
}]); 

Использование в HTML:

<input type="text" id = "name" data-ng-bind-placeholder="'Label.name' | translate> 
+0

Он отлично работает. Спасибо @ 92sharmasaurabh. –

Смежные вопросы