【问题标题】:When I select value from autocomplete, menu disappear and appear again in angularjs当我从自动完成中选择值时,菜单消失并再次出现在 angularjs
【发布时间】: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


【解决方案1】:

这样解决了。我已经更改了自动完成的“选择”事件中的代码:

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

触发“输入”重新打开菜单。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多