【发布时间】:2015-09-03 15:56:20
【问题描述】:
我正在使用 angularjs 和自动完成 (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 的输入元素一样。所以当我专注于它时,菜单又被打开了。 事实上,如果我看得更清楚,菜单会关闭并立即重新打开。
有什么建议吗?
【问题讨论】:
-
使用触发器时,需要根据层次结构正确解析html的输入元素。看看this
-
是的,问题肯定出在
iElement.trigger('input');.. 但我认为问题不在于我使用触发器的输入元素.. 事实上,当我调试它时,我可以看到@987654326 @ 是我在 html 中的输入元素...也许我触发了错误的事件? -
谢谢你,@HarshMehta!您帮助我了解了问题所在。下面,就是答案。
标签: jquery angularjs autocomplete