角ng-repeat输入过滤器加倍搜索中的第一个字符

Angular ng-repeat input filter doubling first character in search

本文关键字:第一个 字符 搜索 ng-repeat 输入 过滤器      更新时间:2023-09-26

我的页面上有一个输入元素来过滤结果集。当我开始在文本框中输入时,它总是将输入的第一个字符加倍。

这是html:

<input ng-model="query" type=search results=5 name=s placeholder="{{translation._SEARCH_}}..." style="text-align: left" />
<div ng-repeat="eu in EligibleUsers | orderBy: Username | filter: query">
    <a style="border: 1px solid green; border-radius: 5px; background-color: light-gray; width: 100%; margin: 5px; height: 100px;" ng-click="Impersonate(eu.Username)">
        <span>{{eu.Username}}</span>
    </a>
</div>

这里是控制器变量:

$scope.query = "";

这里是EligibleUsers:

var successGetImpersonateUsers = function (data) {
        if (data.length > 0) {
            for (var i = 0; i < data.length; i++) {
                var impersonateUser = data[i];
                $scope.EligibleUsers.push(impersonateUser);
            }
        }
    };

所以,如果我在搜索框中输入"a",它会显示"aa"。如果我试着快速键入"ab",它会显示"aab"。

编辑:我删除了$scope。从我的控制器查询,我仍然得到相同的行为

编辑:当它绑定到我的范围"query"变量时,它只复制第一个字符。一旦我删除了ng-model="query",那么重复就不会再发生了…

编辑:当输入一个字符,如"a",并让它双击,如"aa",然后按删除键一次,它实际上删除了两个a。

注意:请忽略我的缺乏/可怕的样式…

我发现只有在Mac上的iOS模拟器上才会发生这种情况。很明显,(我认为)这是模拟器的一个bug, Angular没有任何问题。谷歌又赢了!