我的页面上有一个输入元素来过滤结果集。当我开始在文本框中输入时,它总是将输入的第一个字符加倍。
这是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没有任何问题。谷歌又赢了!