如何在ng-dropdown-multiselect上使用角度转换

时间:2017-07-24 13:16:23

标签: javascript angularjs angular-translate ng-dropdown-multiselect

在我的AngularJS应用程序中,我使用angular translate来实现国际化。

但它不适用于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 个答案:

答案 0 :(得分:0)

您不需要观看范围,它们提供的translation-texts属性仅在构建dom时有效。 每次更改语言时,都可以通过重建选择来使用技巧。

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-如果更改它的按钮不在同一控制器中,则捕获语言更改检测,并将变量设置为不显示选择,添加一点超时以再次显示它,以便重新呈现选择。 / p>

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

一名工作人员https://embed.plnkr.co/2psHUD/