pascalprecht.translate не работает с атрибутом элемента начальной загрузки-filestyled-file-form-element

Я подготовил вантуз, чтобы увидеть проблему: Angular Translate Example

Перевод работает в общем, единственное исключение - это поле атрибута элемента формы-файла-начальной загрузки.

      <div class="form-group">
        <!-- APP_USER_IMAGE -> WORKS -->
        <label class="control-label col-sm-3" for="image">
              "{{ 'APP_USER_IMAGE' | translate }}"
        </label>
        <div class="col-md-6">
          <!-- APP_FILE_UPLOAD_TXT -> DOES NOT WORK --> 
          <input type="file" filestyle="" 
              id="image" 
              name="image" 
              ng-model="tempData.image" 
              data-button-text="{{ 'APP_FILE_UPLOAD_TXT' | translate }}" 
              data-class-button="btn btn-default" 
              data-classinput="form-control inline" 
              nv-file-select="" 
              class="form-control" />
        </div>
      </div>

Что я делаю неправильно?

2 ответа

Решение

Удалось получить переведенное значение в filestyle директива:

function link(scope, element) {
    var options = element.data();
    $translate('APP_FILE_UPLOAD_TXT').then(function (text) {
      options.buttonText = text;
      element.filestyle(options);
    });
}

Смотрите обновленный плункер

С 2 модификациями вы можете использовать решение с каждым файловым элементом, не касаясь директивы каждый раз:

1) По мнению

data-button-text="APP_FILE_UPLOAD_TXT"

2) В директиве

function filestyle($translate) {
    var directive = {
        strict: 'A'
    };
    return directive;

    function link(scope, element) {
        var options = element.data();
        // old usage support
        options.classInput = element.data('classinput') || options.classInput;
        $translate(options.buttonText).then(function(text) {
            options.buttonText = "&nbsp;" + text;
            element.filestyle(options);
        });
    }
}
Другие вопросы по тегам