Как использовать угловой перевод на ng-dropdown-multiselect

В моем приложении AngularJS я использовал угловой перевод для реализации интернационализации.

Но это не работает с ng-dropdown-multiselect тексты.

Я пытался связать перевод-текст с переменными $scope и применить $scope.$ Watch для ожидания изменений, но это тоже не сработало.

Кто-то знает, как сделать это на нескольких языках?

<div
    ng-dropdown-multiselect="" 
    options="myModelOptions" 
    selected-model="mySelectedItem" 
    extra-settings="mySettings" 
    translation-texts="{
        'checkAll': myScopeVariable.selectAll,
        'uncheckAll': myScopeVariable.selectNone,
        'buttonDefaultText': myScopeVariable.selectZero,
        'selectionCount': myScopeVariable.selectCount,
        'dynamicButtonTextSuffix': myScopeVariable.selectSufix
    }">
</div>

1 ответ

Вам не нужно смотреть область, translation-texts Атрибуты, которые они предоставили, работают только при строительстве дома. Вы можете использовать хитрость, перестраивая выбор каждый раз, когда вы меняете язык.

1- Добавление условия для отображения выбора, для этого примера ng-if="!unready", И использовать translate фильтровать напрямую.

<div ng-if="!unready" ng-dropdown-multiselect="" options="cars" selected-model="selectedCar" extra-settings="mySettings" translation-texts="{
        'checkAll': ('selectAll' | translate),
        'uncheckAll': ('selectNone' | translate),
        'buttonDefaultText': ('selectZero' | translate),
        'selectionCount': ('selectCount' | translate),
        'dynamicButtonTextSuffix': ('selectSufix' | translate)
    }">
  </div>

2 - поймать обнаружение изменения языка, если кнопка, изменяющая его, находится не в том же контроллере, и установите переменную так, чтобы она не отображала выбор, добавив небольшой тайм-аут, чтобы отобразить его снова, чтобы выбор был повторно обработан.

$rootScope.$on('$translateChangeSuccess', function(event, current, previous) {
        // Language has changed
        $scope.unready = true;
        $timeout(function() {
            $scope.unready = false;
        }, 10);
    });

Работающий поршень https://embed.plnkr.co/2psHUD/

Другие вопросы по тегам