对直接OR嵌套属性

时间:2015-04-29 22:16:46

标签: javascript angularjs sorting

我正在尝试在我的角应用中的表上启用列排序。棘手的部分是几列直接属于ng-repeat中的项目,而其他列属于属于该项目的对象。以下是一些示例数据:

[
    {
        id: 1,
        status: 'active',
        part_number: 'XXX01',
        paValues: [
            {
                2242_max_search_value: 500,
                display_value: 500
            },
            {
                2220_min_search_value: 10,
                display_value: 10
            }
        ],
        includeInResults: true
    },
    {
        id: 2,
        status: 'active',
        part_number: 'XXX02'
        ,
        paValues: [
            {
                2242_max_search_value: 300,
                display_value: 300
            },
            {
                2220_min_search_value: 20,
                display_value: 20
            }
        ],
        includeInResults: true
    },
    {
        id: 3,
        status: 'obsolete',
        part_number: 'XXX03'
        ,
        paValues: [
            {
                2242_max_search_value: 150,
                display_value: 150
            },
            {
                2220_min_search_value: 0,
                display_value: "-"
            }
        ],
        includeInResults: true
    }
]

我的转发器看起来像这样:

<tr ng-repeat="part in ctrl.parts|orderBy:orderByField:reverseSort" partrow="part"></tr>

在我的控制器上我有

$scope.orderByField = 'part_number';
$scope.reverseSort = false;
$scope.attributeSort = function(field, reverse) {
    var paKey = controller.findKey(controller.parts[0].paValues, field + "_search_value");
    $scope.orderByField = "paValues[" + paKey + "]";
    $scope.reverseSort = reverse;
};

现在我可以在$scope.orderByField更改为statuspart_number等直接属性的字符串名称时对表格进行排序。

问题是当它以编程方式更改为paValues[0].2422_max_search_value时,我认为应该对应于paValues列表中第一项中的2242_max_search_value,它不会排序,我得到以下控制台错误:

  

错误:[$ parse:syntax]语法错误:令牌'.2422'是表达式[paValues [0] .2422_max_search_value]第12列的意外标记,从[.2422_max_search_value]开始。

如果排序在直接属性上正常工作,为什么它不能在嵌套属性上工作?

0 个答案:

没有答案