gpt4 book ai didi

javascript - Angular js 搜索过滤器(ng-repeat 内的日期和 ng-repeat)

转载 作者:行者123 更新时间:2023-11-28 05:21:02 26 4
gpt4 key购买 nike

我有一个显示用户信息的表。我们在顶部有一个搜索框,允许用户输入文本并从下拉列表中选择要搜索的类型。

<input type="text" ng-model=search>
<select ng-model=searchBy>
<option value="$">All</option>
<option value="Name">Name</option>
<option value="DoB">Date of birth</option>
<option value="Hobbies">Hobby</option>
</select>

<div ng-repeat="user in users | filter:searchFilter">
<div>{{user.Name}}</div>
<div>{{user.DoB | date: "MM/dd/yyyy"}}</div>
<div ng-repeat="hobby in user.Hobbies">{{hobby}}</div>
</div>

在 JavaScript 中:

 Object.defineProperty($scope, "searchFilter", {
get: function () {
var out = {};
out[$scope.searchBy || "$"] = $scope.search;
return out;
}
});

这仅适用于名称列。对于日期列,格式有所不同,并且由于爱好位于内循环中,即使搜索文本位于爱好中,用户也不会显示在列表中。有人可以帮忙设计一个满足所有这些值的过滤器吗?

TIA。

最佳答案

可能有更好的解决方案,但这可能有效:

JavaScript:

Object.defineProperty($scope, "searchFilter", {
get: function () {
var out = {};
var search = $scope.search;
if(!search) {
return {'$': ''};
}
if($scope.searchBy === 'DoB') {
search = new Date(search).getTime();
}
if($scope.searchBy === 'Hobbies') {
$scope.users.forEach(function(n) {
n.hobbyStr = n.Hobbies.join(',');
});
$scope.searchBy = 'hobbyStr';
}
out[$scope.searchBy || "$"] = search;
return out;
}
});

这是一个 plnkr

关于javascript - Angular js 搜索过滤器(ng-repeat 内的日期和 ng-repeat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com