如何在Angular.js中按翻译内容排序ng重复



是否有一种简单的方法可以通过翻译的字符串对重复的元素进行排序?到目前为止,我正在使用以下模板:

        <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)订购

我创建了一个自定义过滤器,以防万一您使用角度平移;)

我已经更新了描述,因此您可以看到如何在 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;
  };
}]);

最新更新