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。
大家好,我在多个复选框过滤器上找到了这个: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。