在多维数组的ng-repeat上使用orderBy

时间:2015-01-21 20:34:45

标签: angularjs multidimensional-array angular-filters angularjs-orderby

我有一个动态数据模型通过websocket进入,看起来像这样:

var results = [
    [
        {name:'A'},
        {price: 0.00}
    ],
    [
        {name:'C'},
        {price: 0.00}
    ],
]

我使用我的ng-repeat如下:

ng-repeat="result in results"

每当我需要访问结果数组中的一个数组时,我会这样做:

result[0].name

我遇到的问题是ngRepeat上的orderBy过滤器似乎不允许我这样做:

ng-repeat="result in results | orderBy: result[0].name

也许这是对Angular如何运作的基本误解,但我不明白为什么这不起作用。这是不正确的语法,还是由于我的数据模型是动态的?我应该设置$ scope。$ apply somewhere?

我尝试过引号,我已经尝试在最初解析数据的函数中设置谓词,在结果中为每个result.name实例设置谓词,但这也是不起作用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:10)

这个问题非常有趣。由于orderBy将使用当前对象,因此您必须相对分配订单字符串。

这样可以解决问题:

ng-repeat="result in results | orderBy: 'this[0].name'