Javascript 下拉列表中的angularjs自定义筛选器
我有Javascript 下拉列表中的angularjs自定义筛选器,javascript,angularjs,Javascript,Angularjs,我有ulli元素,其中写入了用户列表。 我有一个输入,用户可以在其中编写和过滤用户列表。 默认情况下,此ul元素是隐藏的。在专注于输入之后,我展示这个ul元素,在模糊上,我隐藏这个ul元素 <input type="text" autocomplete="off" ng-model="checkData[key]" /> <ul> <li ng-repeat="user in users | identification:checkData[key]"&g
ulli
元素,其中写入了用户列表。
我有一个输入,用户可以在其中编写和过滤用户列表。
默认情况下,此ul元素是隐藏的。在专注于输入之后,我展示这个ul元素,在模糊上,我隐藏这个ul元素
<input type="text" autocomplete="off" ng-model="checkData[key]" />
<ul>
<li ng-repeat="user in users | identification:checkData[key]">{{user}}</li>
</ul>
- {{user}
和我的过滤器:
return (items: Array<string|number>, value: string|number) =>
{
if(typeof items !== 'undefined')
{
var filtered: Array<string|number> = [];
for(var i: number = 0, length: number = items.length; i < length; i++)
{
var element: string|number = items[i];
if((((element + '').indexOf(value + '') === 0) && element !== value) || typeof value === 'undefined')
{
filtered.push(element);
}
}
return filtered;
}
}
return(项目:数组,值:字符串|编号)=>
{
如果(项目类型!==“未定义”)
{
筛选的变量:数组=[];
对于(变量i:number=0,长度:number=items.length;i
这很好,但我有一个问题。当用户在输入中输入某个值时,ul元素中的用户列表将被过滤
所以当用户再次关注输入时,在ul中显示过滤后的数据。我想在每个焦点上显示完整列表,不删除输入值
如何实现这一点?您可以通过向filter方法传递一个参数来禁用聚焦过滤器,方法如下:
<ul>
<li ng-repeat="user in users | identification:checkData[key]:isEnabled" ng-focus="isEnabled = false;">{{user}}</li>
</ul>
- {{user}
修改您的过滤器:
return (items: Array<string|number>, value: string|number, isEnabled: boolean) =>
{
if (!isEnabled) {
return items; // Return the unfiltered list ...
}
if(typeof items !== 'undefined')
{
var filtered: Array<string|number> = [];
for(var i: number = 0, length: number = items.length; i < length; i++)
{
var element: string|number = items[i];
if((((element + '').indexOf(value + '') === 0) && element !== value) || typeof value === 'undefined')
{
filtered.push(element);
}
}
return filtered;
}
}
return(项目:数组,值:字符串|数字,isEnabled:boolean)=>
{
如果(!isEnabled){
返回项;//返回未筛选的列表。。。
}
如果(项目类型!==“未定义”)
{
筛选的变量:数组=[];
对于(变量i:number=0,长度:number=items.length;i
这样就可以了。试试这个
<input type="text" autocomplete="off" ng-model="checkData[key]" ng-focus="filterKey[key] = ''" ng-blur="filterKey[key] = checkData[key]"/>
<!-- hidden field to save search text -->
<input type="hidden" ng-model="filterKey[key]"/>
<ul>
<li ng-repeat="user in users | identification:filterKey[key]">{{user}}</li>
</ul>
- {{user}
不要在li
的ng repeat
- {code}}