使用AngularJS将过滤器动态添加到表中特定的选定属性
我有两个下拉列表,一个用于“id”、“name”等字段,另一个用于“uppercase”、“contains”、“endWith”等过滤器。过滤器值是用angularjs编写的自定义过滤器名称。我有一个搜索文本框,用户在其中键入所选字段和属性的搜索项使用AngularJS将过滤器动态添加到表中特定的选定属性,angularjs,filter,angularjs-ng-repeat,angular-filters,Angularjs,Filter,Angularjs Ng Repeat,Angular Filters,我有两个下拉列表,一个用于“id”、“name”等字段,另一个用于“uppercase”、“contains”、“endWith”等过滤器。过滤器值是用angularjs编写的自定义过滤器名称。我有一个搜索文本框,用户在其中键入所选字段和属性的搜索项 <div> <label>Filter</label> <select ng-model="selectedFilter"> <option value="upp
<div>
<label>Filter</label>
<select ng-model="selectedFilter">
<option value="uppercase">Uppercase</option>
<option value="startsWithLetter">Starts With</option>
</select>
</div>
<div>
<label>Fields</label>
<select ng-model="selectedField">
<option value="Id">Id</option>
<option value="name">startsWithLetter</option>
</select>
</div>
<input type="text" ng-model="search"/>
}))
很少有像这样的自定义过滤器
app.filter('startsWithLetter', function () {
return function (items, letter) {
var filtered = [];
var letterMatch = new RegExp(letter, 'i');
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (letterMatch.test(item.name.substring(0,1))) {
filtered.push(item);
}
}
return filtered;
};
});
我正在努力使用一种语法来编写ng repeat,以便过滤器仅应用于选定的属性和具有该搜索词的选定过滤器。若未选择任何内容,则表格将显示常规数据
<ul>
<li ng-repeat="friend in friends | filter:{syntax }">
{{ friend.id}} , {{ friend.name }}
</li>
</ul>
-
{{friend.id},{{friend.name}
我正在实现这个特性。需要帮助吗?试试“朋友中的朋友”开头的字母:“A”。。。但如果您需要筛选器的可变列表,可以创建类似“friend in friends | myVariableFilter:myArgs”的内容,并使用条件参数填充“myArgs”。筛选器将基于选定的属性。假设用户选择字段:name和筛选器:startWith,然后在搜索词中键入一个如何映射该字段。{id:1,名字:'Andrew'},{id:4,名字:'Alice'}我会做一个jsbin,回答是谢谢你等着
$scope.friends = [
{
id: 1,
name: 'Andrew'
},
{
id: 2,
name: 'Will'
},
{
id: 3,
name: 'Mark'
},
{
id: 4,
name: 'Alice'
},
{
id: 5,
name: 'Todd'
}];
<ul>
<li ng-repeat="friend in friends | filter:{syntax }">
{{ friend.id}} , {{ friend.name }}
</li>
</ul>