angular js多个复选框过滤多级JSON

angular js multiple checkboxes filters on multilevel JSON

本文关键字:过滤 多级 JSON 复选框 js angular      更新时间:2023-09-26

嘿,伙计们,我在多个复选框过滤器上发现了这个:angular js多个复选盒,带有自定义过滤器

我也有类似的问题,但有一个多级JSON。类似于以下内容:http://jsfiddle.net/u9a1oLp6/5/

特别是这部分是我的问题:

$scope.searchFilter = function(row){
        var mercChecked = getChecked($scope.merchantCheckboxes);
        var brandChecked = getChecked($scope.brandCheckboxes);
        if(mercChecked.length == 0 && brandChecked.length == 0)
            return true;
        else{
            if($scope.merchantCheckboxes[row.MerchantName])
                return true;
            else{
                return row.BrandList.split(/,'s*/).some(function(brand){
                    return $scope.brandCheckboxes[brand];
                });
            }
        }
    };

有什么想法吗?

问题很简单,在BrandMerchant之后,您错过了json中的逗号
我通过查看浏览器控制台发现了这一点。

{
        "MerchantName": "amazon",
        "BrandMerchant":[
            {
        "BrandList": " pepe jeans, peter england, red tape"
            }
         ], // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< THIS COMMA HERE
         "Description": "amazon Store"
}

此外,不确定是否要将Brandlist更改为数组
"BrandList": [item1, item2, etc]

您只需要更正访问BrandList的代码。

通过BrandMerchant阵列访问:

$scope.searchFilter = function(row){
    var mercChecked = getChecked($scope.merchantCheckboxes);
    var brandChecked = getChecked($scope.brandCheckboxes);
    if(mercChecked.length == 0 && brandChecked.length == 0)
        return true;
    else{
        if($scope.merchantCheckboxes[row.MerchantName])
            return true;
        else{
            return row.BrandMerchant[0].BrandList.split(/,'s*/).some(function(brand){
                return $scope.brandCheckboxes[brand];
            });
        }
    }
};

此外,当您为正确的过滤器构建BrandList数组时:

_.each($scope.records, function(i){
   if(i.BrandMerchant[0].BrandList)   
$scope.BrandList=_.union($scope.BrandList,i.BrandMerchant[0].BrandList.split(','       ));
});

检查一下这把小提琴。