当我从自动完成中选择值时,菜单消失并再次出现在angularjs中

时间:2015-09-02 10:25:02

标签: jquery angularjs autocomplete

我正在使用angularjs和autocomplete(jquery-ui)。 当我从文本框中写入时出现的菜单列表中选择一个值时,菜单不会消失。 这是我正在使用的代码:

<input type="text" name="indirizzo" data-ng-model="input.indirizzo" auto-complete ui-items="indirizzi" data-ng-model-options="{ updateOn: 'mousedown blur' }" />

这里是angular的指令:

.directive('autoComplete', function($timeout) {
    return function(scope, iElement, iAttrs) {
        iElement.autocomplete({
            source: scope[iAttrs.uiItems],
            select: function() {
                $timeout(function() {
                    iElement.trigger('input');
                }, 0);
            }
        });
    };
})

任何人都可以帮助我吗?

谢谢

更新

我看到如果从指令中删除以下行,则菜单正确关闭

iElement.trigger('input');

但是这样,我的模型没有更新。

更新 也许我明白哪个是问题所在。但我不知道如何解决它。 当我触发输入事件时,就像我专注于Html的输入元素。所以当我专注于它时,菜单会再次打开。 事实上,如果我看得更清楚,那么就会关闭并立即重新开启。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

以这种方式解决。我更改了自动完成的“select”事件中的代码:

$timeout(function () {
    iElement.controller('ngModel').$setViewValue(iElement.val());
}, 0);

触发'输入'重新打开菜单。