Angular Material:md-autocomplete - 如何在 Enter 事件中隐藏 md-autocomplete-suggestions? [英] Angular Material: md-autocomplete - how to hide md-autocomplete-suggestions on Enter event?

查看:22
本文介绍了Angular Material:md-autocomplete - 如何在 Enter 事件中隐藏 md-autocomplete-suggestions?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有md-autocomplete:

<md-autocomplete 
                         md-min-length="1"
                         ng-enter="presEnter();"
                         md-no-cache="true"                        
                         md-selected-item="selectedItem" 
                         md-search-text="searchText" 
                         md-items="item in querySearch(searchText)"
                         md-item-text="item.name" 
                         placeholder="Search for a vegetable">
          <span md-highlight-text="searchText">{{item.name}} :: {{item.type}}</span>
        </md-autocomplete>

带指令:ng-enter.

我的目标:当用户按下 Enter 我想隐藏 md-autocomplete-suggestions 下拉菜单

My goal: When user presses Enter I want to hide md-autocomplete-suggestions dropdown

我从 HTML 中知道我需要以某种方式调用:$mdAutocompleteCtrl.hidden = true; 但不知道如何在 Controller 中使用 $mdAutocompleteCtrl.

I know from HTML I need somehow to call: $mdAutocompleteCtrl.hidden = true; but have no idea how to use $mdAutocompleteCtrl in Controller.

我用谷歌搜索并发现:

$timeout( function() { $scope.$$childHead.$mdAutocompleteCtrl.hidden = true; },100);

但是没有 $mdAutocompleteCtrl(至少在我的 JS 中,只有在 HTML 中,我不知道它的范围)

but there is no $mdAutocompleteCtrl (at least in my JS, only in HTML and i don't know its scope)

我玩这个示例:输入a",然后按下下拉菜单输入.

I play with this example: type 'a' and after dropdown press Enter.

有什么想法吗?

推荐答案

$mdAutocompleteCtrl 被放置为自动完成范围的属性.

The $mdAutocompleteCtrl is placed as a property on the autocomplete's scope.

首先,您需要访问自动完成元素.一种方法是在自动完成上放置一个 ID:

First, you need access to the autocomplete element. One way to do that is to put an ID on the autocomplete:

<md-autocomplete id='Auto'
                 md-min-length="1"
                 ng-enter="presEnter();"
                 md-no-cache="true"
                 md-selected-item="selectedItem"
                 md-search-text="searchText"
                 md-items="item in querySearch(searchText)"
                 md-item-text="item.name"
                 placeholder="Search for a vegetable">

然后您可以使用该元素来获取自动完成的内部范围.由于自动完成元素本身在您提供的范围内,因此您需要获取自动完成的子元素之一的范围.

Then you can use that element to get the inner scope of the autocomplete. Because the autocomplete element itself is on the scope that you provided, you'll want to get the scope of one of the autocomplete's child elements.

$scope.presEnter = function(e){
    var autoChild = document.getElementById('Auto').firstElementChild;
    var el = angular.element(autoChild);
    el.scope().$mdAutocompleteCtrl.hidden = true;
};

这是一个工作示例:http://codepen.io/anon/pen/rVPZKN?editors=101

这篇关于Angular Material:md-autocomplete - 如何在 Enter 事件中隐藏 md-autocomplete-suggestions?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆