我有一系列要重复使用ng-repeat的产品,并且正在使用
<div ng-repeat="product in products | filter:by_colour">
按颜色过滤这些产品。过滤器正在运行,但是如果产品名称/说明等包含颜色,则在应用过滤器后产品仍保留。
如何将滤镜设置为仅应用于数组的颜色字段而不是每个字段?
我有一系列要重复使用ng-repeat的产品,并且正在使用
<div ng-repeat="product in products | filter:by_colour">
按颜色过滤这些产品。过滤器正在运行,但是如果产品名称/说明等包含颜色,则在应用过滤器后产品仍保留。
如何将滤镜设置为仅应用于数组的颜色字段而不是每个字段?
Answers:
请参阅过滤器页面上的示例。使用一个对象,并在color属性中设置颜色:
Search by color: <input type="text" ng-model="search.color">
<div ng-repeat="product in products | filter:search">
filter:{ color: '...', size: '...', ...}
指定colour
要在其中应用过滤器的属性(即):
<div ng-repeat="product in products | filter:{ colour: by_colour }">
'!'+
像这样就放在前面<div ng-repeat="product in products | filter:{ colour: '!'+by_colour }">
<div ng-repeat="product in products | filter:{ resultsMap.annie: '!!' }">
或(类似的东西):<div ng-repeat="product in products | filter:by">
和在控制器上:$scope.by = { 'resultsMap.annie': '!!' };
。第二种方法使您可以更好地控制要过滤的属性。注意:'!!'
表示“不为空”。
您可以按对象进行过滤,该对象的属性与必须过滤的对象相匹配:
app.controller('FooCtrl', function($scope) {
$scope.products = [
{ id: 1, name: 'test', color: 'red' },
{ id: 2, name: 'bob', color: 'blue' }
/*... etc... */
];
});
<div ng-repeat="product in products | filter: { color: 'red' }">
正如Mark Rajcok建议的那样,这当然可以通过变量传递。
如果要过滤给定对象的孙子(或更深的子孙),则可以继续构建对象层次结构。例如,如果要过滤“ thing.properties.title”,则可以执行以下操作:
<div ng-repeat="thing in things | filter: { properties: { title: title_filter } }">
您还可以仅通过将对象的多个属性添加到过滤器对象中来对其进行过滤:
<div ng-repeat="thing in things | filter: { properties: { title: title_filter, id: id_filter } }">
注意角度过滤器。如果要在字段中选择特定值,则不能使用过滤器。
例:
javascript
app.controller('FooCtrl', function($scope) {
$scope.products = [
{ id: 1, name: 'test', color: 'lightblue' },
{ id: 2, name: 'bob', color: 'blue' }
/*... etc... */
];
});
html
<div ng-repeat="product in products | filter: { color: 'blue' }">
这将选择两者,因为使用类似的substr
含义。这意味着您要选择“颜色”包含字符串“蓝色”而不是“颜色”为“蓝色”的产品。
如果要执行以下操作:
<li class="active-item" ng-repeat="item in mc.pageData.items | filter: { itemTypeId: 2, itemStatus: 1 } | orderBy : 'listIndex'"
id="{{item.id}}">
<span class="item-title">{{preference.itemTitle}}</span>
</li>
...您不仅将获得itemTypeId 2和itemStatus 1的项目,而且还将获得具有itemType 20、22、202、123和itemStatus 10、11、101、123的项目。这是因为过滤器:{。 。}语法就像字符串包含查询一样。
但是,如果要添加:true条件,它将按完全匹配进行过滤:
<li class="active-item" ng-repeat="item in mc.pageData.items | filter: { itemTypeId: 2, itemStatus: 1 } : true | orderBy : 'listIndex'"
id="{{item.id}}">
<span class="item-title">{{preference.itemTitle}}</span>
</li>
我的方式是这样
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是输入字段或您喜欢的任何内容
这样显示
<div ng-if="x.id === sub" ng-repeat=" x in subjcts">{{x.title}}</div>
在过滤器中,指定要对其应用过滤器的对象的属性:
//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}">
如果要过滤一个字段:
label>Any: <input ng-model="search.color"></label> <br>
<tr ng-repeat="friendObj in friends | filter:search:strict">
如果要过滤所有字段:
label>Any: <input ng-model="search.$"></label> <br>
<tr ng-repeat="friendObj in friends | filter:search:strict">