javascript - 使用AngularJS的OrderBy循环列表进行按索引升序排序的导航

标签 javascript angularjs angularjs-ng-repeat

嗨,我如何命令 ng-repeat 将对象数组按照索引键升序排列为特定顺序。

$scope.paneContainer = {books:[{}] } ;  
$scope.paneContainer.books[0].science = { title:"science", content:"web/app/views/partials/science.html"  };
$scope.paneContainer.books[0].alphabets = { title:"alphabets", content:"web/app/views/partials/alphabets.html"  };
$scope.paneContainer.books[0].folks = { title:"folks", content:"web/app/views/partials/folks .html" };

然后在前端:

<ul class="ui-tabs-nav">
    <li ng-repeat="tab in paneContainer.books[0] track by $index | orderBy:$index " class="">
        <strong>{{tab.title}}</strong></a>
    </li>
</ul>

期望的输出是:

  • 科学
  • 字母
  • 各位
  • 当前 Angular 按字母顺序对列表进行排序。

    最佳答案

    正如迈克所说,对象没有顺序。如果您出于某种原因不想将其更改为数组(这可能是最简单也是最好的选择),您可以向该对象添加一个 displayOrder 属性,然后使用过滤器按 displayOrder 对其进行排序。

    angular.module('app').filter('orderByDisplayOrder', function () {
        return function (obj) {
            var array = [];
            Object.keys(obj).forEach(function (key) {
                array.push(obj[key]);
            });
            array.sort(function (a, b) {
                return a.displayOrder - b.displayOrder;
            });
            return array;
        }
    });
    

    然后您可以使用该过滤器进行排序。

    <ul class="ui-tabs-nav">
    <li ng-repeat="tab in paneContainer.books[0] track by $index | orderByDisplayOrder" class="">
        <strong>{{tab.title}}</strong></a>
    </li>
    

    关于javascript - 使用AngularJS的OrderBy循环列表进行按索引升序排序的导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23815313/

    相关文章:

    AngularJS ng-repeat with ng-change

    javascript - 在纯 JavaScript 中隐藏/显示元素

    javascript - SignalR - 从没有 SignalR 库的 javascript 连接到 websocket 服务

    javascript - Angular 2 - 如何在等待 http 请求完成时阻止 GUI 渲染

    javascript - Angular 填充 ng-repeat 和 ng-model

    javascript - 默认情况下,AngularJS ng-repeat 如何跟踪项目?

    javascript - LocationCollection 未标记为 ScriptableType,但可以在脚本中实例化(怎么会?)

    javascript - 允许远程服务器访问本地主机上的 API 服务器

    javascript - Protractor E2E测试错误: Object [object Object] has no method 'getWindowHandle'

    javascript - 如何使用 angular 1.0.8 在 ng repeat 中使用 if 语句