0

在我的AngularJS應用程序中,我使用了角度轉換來實現國際化。如何在ng-dropdown-multiselect上使用角度轉換

但它不適用於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> 
+0

你怎麼在你的控制器設置myScopeVariable? – Fetrarij

+0

這只是一個例子,我用這種方式:$ scope.myScopeVar ...明白了嗎? – kopzinski

回答

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-抓語言變更檢測如果按鈕改變它不是在同一個控制器,並設置變量爲不顯示所述選擇,加入少許超時再次顯示,以便選擇將被重新渲染的。

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

一個工作plunker https://embed.plnkr.co/2psHUD/