angular js 多复选框过滤器 JSON

angular js multiple checkboxes filters on multilevel JSON

大家好,我在多个复选框过滤器上找到了这个:angular js multiple checkbox with custom filters

我有一个类似的问题,但是是多级的 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(','       ));
});

检查此 fiddle