有没有办法在AngularJS groupBy表达式中转义点表示法?

时间:2017-03-28 15:40:01

标签: angularjs json angularjs-ng-repeat

我正在使用此AngularJS过滤器:https://github.com/a8m/angular-filter#groupby

我有一段数据(JSON)涉及包含点的键名,这似乎与嵌套属性有误。

有没有办法阻止过滤器解析点表示法或另一种方法来指定用于分组的字段名称?

注意:我无法改变从服务器构建数据的方式。

我的代码如下所示:

<div ng-repeat="(key, values) in items | groupBy: 'category_id.name'" >
    <div class="item-row">
        {{key}}
    </div>            
    <div class="badge-row" ng-repeat="item in values">
        {{item.name}}
    </div>
</div>

这是我从服务器获得的JSON数据:

[
    {
        "id": "1",
        "name": "test",
        "category_id.name": "Main"
    },
    {
        "id": "2",
        "name": "foo",
        "category_id.name": "Other category"
    },
    {
        "id": "3",
        "name": "bar",
        "category_id.name": "Test"
    }
]

在运行此代码时,目前我正在定义&#39; undefined&#39;作为关键价值。

1 个答案:

答案 0 :(得分:3)

角度过滤器使用$parse,因此您可以按嵌套对象中的字段排序

我有解决此问题的方法。如果它有帮助。

<强>模板

(key, values) in items | groupBy: rawProperty('category_id.name')

<强>控制器

$scope.rawProperty = function(key) {
    return function(item) {
        return item[key];
    };
};

related answer

希望它有所帮助。