我正在使用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的输入元素。所以当我专注于它时,菜单会再次打开。 事实上,如果我看得更清楚,那么就会关闭并立即重新开启。
有什么建议吗?
答案 0 :(得分:1)
以这种方式解决。我更改了自动完成的“select”事件中的代码:
$timeout(function () {
iElement.controller('ngModel').$setViewValue(iElement.val());
}, 0);
触发'输入'重新打开菜单。