【问题标题】:Angular JS server side data filter with multiple checkboxes带有多个复选框的 Angular JS 服务器端数据过滤器
【发布时间】:2016-01-13 08:57:59
【问题描述】:

如何使用多个复选框以角度创建服务器端过滤,当我单击应用过滤器时,应根据检查的输入字段过滤数据,并应删除单击清除过滤器并显示所有数据。这是json

{
	items:[
	{itemName:"apple",itemCategory:"fruits",itemStatus:"available",shipping:"nonshippable"},
	{itemName:"mobile",itemCategory:"electronics",itemStatus:"notavailable",shipping:"shippable"},
	{itemName:"camera",itemCategory:"gadgets",itemStatus:"available",shipping:"shippable"},
	{itemName:"laptop",itemCategory:"computers",itemStatus:"notavailable",shipping:"shippable"},
	{itemName:"jeans",itemCategory:"clothes",itemStatus:"available",shipping:"shippable"},
	{itemName:"nike",itemCategory:"shoes",itemStatus:"available",shipping:"shippable"},
	],
	filters:[
	{label:"apple"},
	{label:"laptop"},
	{label:"jeans"},
	{label:"nike"},
	{label:"camera"}
	]
}

如您所见,我的过滤器 json 和项目都在同一个 json 文件中。

【问题讨论】:

  • 我认为最好在客户端对这些数据进行排序,如果您想从服务器对其进行排序,请创建一个 API 并将过滤器传递给它并显示过滤后的数据
  • 如何将检查的输入字段值传递给请求,我已经有 api。

标签: angularjs angularjs-filter


【解决方案1】:

试试这个

<div ng-repeat="filter in filters">
    <label>{{filter.label}}</label>        
    <input type="checkbox" ng-model="filterCriteria" value="{{filter}}" ng-click="someFunc(filter)">
</div>

控制器

$scope.someFunc = function(filter){
//do the logic
var arr = [];
var idx = arr.indexOf(report);
if(idx>-1){
arr.splice(idx,1);//unchecked values remove from arr
}else{
arr.push(filter);
}
console.log(arr);//if checked values added into arr

}

【讨论】:

  • 是的,我以相同的方式完成了操作,但是一旦我单击应用过滤器,过滤的数据就会被过滤,但之后如果我取消选中输入,数据就会发生变化。我只想在应用过滤器点击时更改
猜你喜欢
  • 2019-05-05
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多