带有搜索过滤器的可点击 uib-accordion
Clickable uib-accordion with search filter
我在尝试使用搜索过滤器在 uib-accordion
中进行搜索时遇到问题,因此它的状态会更改为打开,同时如果搜索为空,用户可以单击 header打开内容。我找到的所有解决方案都只提供一个选项。
这是我在解决方案中所做的工作 - https://plnkr.co/edit/lnWxv7PVR7cfrvrROchb?p=preview
<div class="input-group">
<input class="form-control"
ng-model="searchText"
placeholder="Search"
type="search"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
</div>
<div class="settings-tab">
<uib-accordion>
<div ng-repeat="item in vm.data | filter: searchText">
<div uib-accordion-group class="panel-default" is-open="searchText.length">
<uib-accordion-heading>
<div>
{{item.name}} <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
</div>
</uib-accordion-heading>
<table class="table table-bordered">
<thead>
<th>Name</th>
<th>Value</th>
</thead>
<tbody>
<tr>
<td>id</td>
<td>{{item.id}}</td>
</tr>
<tr>
<td>url</td>
<td>{{item.url}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</uib-accordion>
</div>
问题是我需要这两个功能(在手风琴中搜索内容并打开过滤的内容,如果没有搜索,让用户点击任何 drop-down 来查看里面的内容)现在它给出了错误在控制台中。 Plunkr 更新了评论。
好吧,我已经成功地做出了我想要的东西,为此我创建了自定义过滤器,它将更新返回数组中的打开状态。我不知道的是这个的性能。如果有人有更好的解决方案,请post在这里。
Plunkr 已更新。
function searchFilter() {
return function(data, q){
var arr = [];
angular.forEach(data, function(v){
if(v.id == q) {
v.open = true;
arr.push(v);
} else if (q == '' || !q) {
v.open = false;
arr.push(v);
}
})
// console.log(arr);
return arr;
}
}
我在尝试使用搜索过滤器在 uib-accordion
中进行搜索时遇到问题,因此它的状态会更改为打开,同时如果搜索为空,用户可以单击 header打开内容。我找到的所有解决方案都只提供一个选项。
这是我在解决方案中所做的工作 - https://plnkr.co/edit/lnWxv7PVR7cfrvrROchb?p=preview
<div class="input-group">
<input class="form-control"
ng-model="searchText"
placeholder="Search"
type="search"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
</div>
<div class="settings-tab">
<uib-accordion>
<div ng-repeat="item in vm.data | filter: searchText">
<div uib-accordion-group class="panel-default" is-open="searchText.length">
<uib-accordion-heading>
<div>
{{item.name}} <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
</div>
</uib-accordion-heading>
<table class="table table-bordered">
<thead>
<th>Name</th>
<th>Value</th>
</thead>
<tbody>
<tr>
<td>id</td>
<td>{{item.id}}</td>
</tr>
<tr>
<td>url</td>
<td>{{item.url}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</uib-accordion>
</div>
问题是我需要这两个功能(在手风琴中搜索内容并打开过滤的内容,如果没有搜索,让用户点击任何 drop-down 来查看里面的内容)现在它给出了错误在控制台中。 Plunkr 更新了评论。
好吧,我已经成功地做出了我想要的东西,为此我创建了自定义过滤器,它将更新返回数组中的打开状态。我不知道的是这个的性能。如果有人有更好的解决方案,请post在这里。
Plunkr 已更新。
function searchFilter() {
return function(data, q){
var arr = [];
angular.forEach(data, function(v){
if(v.id == q) {
v.open = true;
arr.push(v);
} else if (q == '' || !q) {
v.open = false;
arr.push(v);
}
})
// console.log(arr);
return arr;
}
}