我创建了一个自定义过滤器,以防您使用 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;
};
}]);