我有一个产品数组,我在使用ng-repeat和正在使用
<div ng-repeat="product in products | filter:by_colour">
按颜色过滤这些产品。滤镜正在工作,但如果产品名称/描述等包含颜色,那么在滤镜应用后,产品仍然存在。
我如何设置过滤器只适用于我的数组的颜色字段,而不是每个字段?
我有一个产品数组,我在使用ng-repeat和正在使用
<div ng-repeat="product in products | filter:by_colour">
按颜色过滤这些产品。滤镜正在工作,但如果产品名称/描述等包含颜色,那么在滤镜应用后,产品仍然存在。
我如何设置过滤器只适用于我的数组的颜色字段,而不是每个字段?
当前回答
最好的方法是使用函数:
html
<div ng-repeat="product in products | filter: myFilter">
javascript
$scope.myFilter = function (item) {
return item === 'red' || item === 'blue';
};
另外,你也可以使用ngHide或ngShow根据特定的条件动态地显示和隐藏元素。
其他回答
我的方式是这样
subjcts is
[{"id":"1","title":"GFATM"},{"id":"2","title":"Court Case"},{"id":"3","title":"Renewal\/Validity"},{"id":"4","title":"Change of Details"},{"id":"5","title":"Student Query"},{"id":"6","title":"Complains"}]
sub是Input字段或者其他你喜欢的
像这样显示
<div ng-if="x.id === sub" ng-repeat=" x in subjcts">{{x.title}}</div>
请参见过滤器页面上的示例。使用一个对象,并在color属性中设置颜色:
Search by color: <input type="text" ng-model="search.color">
<div ng-repeat="product in products | filter:search">
按颜色搜索:
<input type="text" ng-model="searchinput">
<div ng-repeat="product in products | filter:{color:searchinput}">
你也可以做一个内巢。
filter:{prop1:{innerprop1:searchinput}}
在filter中指定要应用筛选器的对象的属性:
//Suppose Object
var users = [{
"firstname": "XYZ",
"lastname": "ABC",
"Address": "HOUSE NO-1, Example Street, Example Town"
},
{
"firstname": "QWE",
"lastname": "YUIKJH",
"Address": "HOUSE NO-11, Example Street1, Example Town1"
}]
但是你想只对名字应用过滤器
<input type = "text" ng-model = "first_name_model"/>
<div ng-repeat="user in users| filter:{ firstname: first_name_model}">
你必须使用 过滤器:{color_name:by_colour}代替
filter:by_colour
如果你想匹配一个对象的单个属性,那么写这个属性而不是object,否则其他的属性会被匹配。