首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏下拉md-autocomplete

如何隐藏下拉md-autocomplete
EN

Stack Overflow用户
提问于 2017-12-10 21:40:27
回答 1查看 604关注 0票数 2

如何在选择项后隐藏AutoComplete下拉菜单我尝试了许多类型,但都没有成功,有人能帮我吗,非常感谢

代码语言:javascript
复制
<md-autocomplete  id="autocomplete"  st-search="campaign_name"
                            ng-disabled="Ctrlmain.isDisabled"
                            md-no-cache="true"
                            md-selected-item="Ctrlmain.selectedItem"
                            md-search-text="Ctrlmain.campaignname"
                            md-selected-item-change="Ctrlmain.filltextbox(item)"
                            md-items="item in Ctrlmain.getMatches(Ctrlmain.campaignname)  | unique:'campaign_name'"
                            md-item-text="item.campaign_name"
                            md-min-length="0"
                            placeholder="Search Campaign"
                            md-menu-class="autocomplete-custom-template">
                                <md-item-template>
                                    <span class="item-title">                                
                                        <span> {{item.campaign_name}} </span>
                                    </span>
                                </md-item-template>
                        </md-autocomplete>

Angularjs代码

代码语言:javascript
复制
filltextbox(st){ 
        var autoChild = document.getElementById('autocomplete').firstElementChild;
        console.log(autoChild)
        var el = angular.element(autoChild);
        console.log(el)
        el.scope().$mdAutocompleteCtrl.hidden = true;

       // return st;


      }
EN

回答 1

Stack Overflow用户

发布于 2018-01-31 15:13:15

我发现在这些场景中,通常是另一个影响异步功能的$digest或DOM阻碍了标准close逻辑的工作。快速解决方法是尝试在$timeout之后关闭对话框。

如果您有其他异步进程在页面上运行,例如执行搜索查询,并且在搜索运行时将全屏加载器写入DOM,则可能有必要将$timeout延迟设置为比平常更大的值。

下面的代码片段尝试立即强制关闭,在超时后覆盖所有基础,我将其用于我的md-autocompletes,作为搜索输入,提供最佳匹配建议和搜索结果。

代码语言:javascript
复制
filltextbox(st){ 
        closeAutocomplete();
        $timeout(closeAutocomplete, 100);

    // return st;
}
closeAutocomplete () {
    var autoChild = document.getElementById('autocomplete').firstElementChild;
    var el = angular.element(autoChild);
    el.scope().$mdAutocompleteCtrl.hidden = true;
}

为了更好地衡量,我确保在页面上操作的其他异步函数也调用closeAutocomplete。您可以将immediate和$timeout逻辑封装到一个调用中,如下所示,它允许您传入一个变量延迟

代码语言:javascript
复制
closeAutocomplete (delay) {
    // declare function once, only one point to maintain
    var fn = function() {
        var autoChild = document.getElementById('autocomplete').firstElementChild;
        var el = angular.element(autoChild);
        el.scope().$mdAutocompleteCtrl.hidden = true;
    };

    fn(); // immediate
    if(!delay) delay = 100;
    $timeout(fn, delay);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47739428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档