是否存在通过翻译字符串订购重复元素的简单方法? 到目前为止,我使用以下模板:
<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)
答案 0 :(得分:4)
我已经创建了一个自定义过滤器,以防您使用angular-translate;)
我已经更新了说明,因此您可以看到如何在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;
};
}]);