【问题标题】:How to order ng-repeat by translated content in Angular.js?如何通过 Angular.js 中的翻译内容订购 ng-repeat?
【发布时间】:2014-12-06 07:03:17
【问题描述】:

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

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

【问题讨论】:

    标签: javascript angularjs internationalization angular-translate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 2013-10-07
      • 2013-01-28
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多