即使在选择选项后,angularJS指令中的jQuery自动完成也会被触发

时间:2015-11-27 00:20:40

标签: jquery angularjs twitter-bootstrap autocomplete local-storage

下面是我想要自动完成功能的输入框:

f()

angularJS指令 -

<input auto-complete-user ng-hide="searchFilter.AssignedToAnyOne" ng-model="searchFilter.FilterByUser"
                            placeholder="Name / Company name" type="text" id="txtFilterUser"
                            class="filterUser form-control input-sm" />

自动完成工作正常,但是一旦我从列表中选择了一个选项,自动完成功能再次触发,从而再次提示我选择的项目非常烦人。但是,当我删除BTWebApp.directive('autoCompleteUser', function ($timeout) { if (localStorage[1] != undefined) { return function (scope, iElement, iAttrs) { iElement.autocomplete({ source: JSON.parse(localStorage[1]), select: function () { $timeout(function () { iElement.trigger('input'); }, 0); } }); }; }}); 时,它工作正常,但模型没有更新。

在我的代码中使用它之前我引用了这个jsFiddle,问题只发生在我在我的项目代码中使用它时,它在jsFiddle中运行得非常好。我不知道我在这里缺少什么。这与bootstrap或使用localstorage有关吗?因为这是我在代码和jsFiddle之间找到的唯一区别。请帮忙。

1 个答案:

答案 0 :(得分:0)

这不是本地存储http://jsfiddle.net/leewinter/gxvsqkuy/2/也许可以在小提琴中试试你的例子,看看它是否可以复制?

angular.module('MyModule', []).directive('autoComplete', function($timeout) {
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
localStorage.setItem('testObject', JSON.stringify(testObject));
if (localStorage.getItem('testObject') != undefined) {
    return function(scope, iElement, iAttrs) {
            iElement.autocomplete({
                source: scope[iAttrs.uiItems],
                select: function() {
                    $timeout(function() {
                      iElement.trigger('input');
                    }, 0);
                }
            });
    };
}});

您使用的是IOS吗?可以尝试以下solution

$("#input").autocomplete({
open: function(event, ui) {
    $('.ui-autocomplete').off('menufocus hover mouseover mouseenter');
}});