我用HTML创建了一个表,其中一个列是json。
我想通过用户名字段json过滤该列,如下所示:
<tr
ng-repeat="row in tagUserstory.tasks |
orderBy:sortType:sortReverse |
filter: (comboOptionsSelected.num == 3 ? {assignedto.username: searchTaskAssignedto} : searchTask)">
assignedto.username
其中assignedto是一个带有用户名字段的json,但这样做是不可能的,因为抛出错误:expected :
我还必须为这个字段创建一个不同的过滤器,因为如果未定义其他列的过滤器则不起作用。
我也试过这样的函数:
$scope.FilterFunction = function (item) {
if(item.assignedto == undefined || item.assignedto == ''){
return false;
}
else if(item.assignedto.username == undefined || item.assignedto.username == ''){
return false;
}
else if(item.assignedto.indexOf($scope.searchTaskAssignedto) >= 0){
return true;
}
else{
return false;
}
};
用HTML两种方式:
<tr
ng-repeat="row in tagUserstory.tasks |
orderBy:sortType:sortReverse |
filter: (comboOptionsSelected.num == 3 ? FilterFunction : searchTask)">
<tr
data-ng-repeat="row in tagUserstory.tasks | orderBy:sortType:sortReverse |
filter:searchTask"
ng-hide="comboOptionsSelected.num == 3 && !FilterFunction">
但过滤器向我显示了所有存在的结果。
如果我以这种方式制作过滤器,也会发生同样的情况:
angular.module('myAppAngularMinApp')
.filter('prueba', function () {
return function (item, searchTaskAssignedto) {
if(item.assignedto == undefined || item.assignedto == ''){
return false;
}
else if(item.assignedto.username == undefined || item.assignedto.username == ''){
return false;
}
else if(item.assignedto.indexOf(searchTaskAssignedto) >= 0){
return true;
}
else{
return false;
}
};
})
在HTML中:
<input ng-show="comboOptionsSelectedTask.num == 3" type="text" class="form-control" ng-model="searchTaskAssignedto"/>
<tr
ng-repeat="row in tagUserstory.tasks | orderBy:sortType:sortReverse | filter: (comboOptionsSelected.num == 3 ? {prueba : searchTaskAssignedto} : searchTask)">
有什么想法吗?
非常感谢。