命令不使用ng-repeat上的dict语法

Cam*_*nge 39 javascript angularjs angularjs-orderby

我正在尝试使用ng-repeat和字典样式语法并对键值应用顺序.

(key, value) in something | orderBy:'key'

似乎OrderBy没有按预期工作

这里的例子 http://jsfiddle.net/mhXuW/

Mar*_*cok 19

orderBy的参数必须与对象数组中的属性名称匹配.

您的数据需要看起来像这样:

$scope.list2 = [ { id:"2013-01-08T00:00:00", name:'Joe'},
                 { id:"2013-01-09T00:00:00", name:'Sue'}];
Run Code Online (Sandbox Code Playgroud)

然后像这样的过滤器将起作用:

<div ng-repeat="item in list2 | orderBy:'id':true">
Run Code Online (Sandbox Code Playgroud)

小提琴.

请注意,orderBy适用于整个数组(something在上面的示例代码中),它返回一个已排序的数组.orderBy什么都不知道keyvalue.

  • 谢谢大家,我正在使用下划线,所以我用地图函数http://jsfiddle.net/PsrUY/修复它 - 对我来说最后一点是重要的一点.我期待angular通过一个匹配(key,value)结构的新数组发送.相反,它是基于初始列表 (2认同)

ako*_*nsu 11

这没有实现.请看这里:

https://github.com/angular/angular.js/issues/1286

编辑(2013年8月27日):这个问题现在似乎已经解决了.


Pet*_*esz 6

我创建了一个自定义过滤器,以使选择列表成为可能:

.filter('toDictionaryArray', function () {
    return function (obj) {
        if (!(obj instanceof Object)) return obj;

        var arr = [];
        for (var key in obj) {
            arr.push({ key: key, value: obj[key] });
        }
        return arr;
    }
})
Run Code Online (Sandbox Code Playgroud)

选择列表ng-options然后如下所示:

<select ng-options="kv.key as kv.value for kv in p.options | toDictionaryArray | orderBy:'value'"></select>
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于ng-repeat (4认同)