javascript - 如何通过 Angular.js 中的翻译内容来订购 ng-repeat?

标签 javascript angularjs internationalization angular-translate

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

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

最佳答案

我已经创建了一个自定义过滤器,以防万一您使用 Angular 翻译;)

我已经更新了描述,所以您可以在 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;
  };
}]);

关于javascript - 如何通过 Angular.js 中的翻译内容来订购 ng-repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27329234/

相关文章:

internationalization - Yii2翻译

javascript - Protractor - 字段存在但不可见 - 元素当前不可交互且可能无法操作

java - 如何在 Spring MVC 中定义和获取基于语言环境的消息?

javascript - 从文件 ://URL 运行的应用程序发出的请求的 “Origin null is not allowed by Access-Control-Allow-Origin” 错误

javascript - 获取屏幕上最明显的元素

javascript - AngularJS:使用相同输入添加和编辑列表项

javascript - 如何在给定的 Angular 应用程序中获取所有指令名称?

java - Spring MVC i18n 不工作

JavaScript 和 FF 插件 : How to save images to local disk without re-downloading them

javascript - 循环中的 NodeJS MySQL 查询在预期之前返回