1

是否存在簡單的方法來通過翻譯後的字符串排序重複元素? 到目前爲止,我使用下面的模板:如何通過Angular.js中的翻譯內容重複ng-repeat?

 <h3 ng-repeat="scheme in data.schemes | orderBy:'scheme.collectionName':true"> 
      <span class="{{scheme.iconCssClassName || 'glyphicon glyphicon-asterisk'}}"></span> 
      <a href="#/storage/{{scheme.collectionName}}" translate="storage__{{scheme.collectionName}}"></a> 
     </h3> 

我想用$translate("storage__" + scheme.collectionName)

回答

4

訂購我創建了一個自定義過濾器,以防萬一你正在使用角轉換;)

我已經更新了描述,因此您可以看到如何將它用於ng-repeat中的對象。你也可以用一個簡單的數組來使用它。

/** 
* orderByTranslated Filter 
* Sort ng-options or ng-repeat by translated values 
* @example 
* ng-repeat="scheme in data.schemes | orderByTranslated:'storage__':'collectionName'" 
* @param {Array|Object} array or hash 
* @param {String} i18nKeyPrefix 
* @param {String} objKey (needed if hash) 
* @return {Array} 
*/ 
app.filter('orderByTranslated', ['$translate', '$filter', function($translate, $filter) { 
    return function (array, i18nKeyPrefix, objKey) { 
    var result = []; 
    var translated = []; 
    angular.forEach(array, function(value) { 
     var i18nKeySuffix = objKey ? value[objKey] : value; 
     translated.push({ 
     key: value, 
     label: $translate.instant(i18nKeyPrefix + i18nKeySuffix) 
     }); 
    }); 
    angular.forEach($filter('orderBy')(translated, 'label'), function(sortedObject) { 
     result.push(sortedObject.key); 
    }); 
    return result; 
    }; 
}]); 
相關問題