angularjs - Angular Material : md-autocomplete - how to hide md-autocomplete-suggestions on Enter event?

标签 angularjs angular-material

我有 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下拉

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

我用谷歌搜索,发现:
$timeout( function() { $scope.$$childHead.$mdAutocompleteCtrl.hidden = true; },100);

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

我玩这个 example :输入“a”,然后在下拉菜单后按 Enter。

有任何想法吗?

最佳答案

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

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

<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">

然后您可以使用该元素来获取自动完成的内部范围。因为自动完成元素本身在您提供的范围内,所以您需要获取自动完成的子元素之一的范围。
$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

关于angularjs - Angular Material : md-autocomplete - how to hide md-autocomplete-suggestions on Enter event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858787/

相关文章:

angular - 使用不带 MatDialog 的组件,MatDialogRef<SomeComponent>

java - 使用 angularjs 和 spring boot 将数据存储到数据库中的问题

javascript - ion-view 没有出现在 ion-nav-view 中

javascript - 在选择标签上出现 ng-model 问题,但在其他地方没有问题

javascript - 如何将一个数组项传输到另一个数组并使用 Angular Material Drag n Drop CDK 更新它,而无需两个项目都绑定(bind)到相同的参数

angular - 错误 TS2307 : Cannot find module 'moment' in moment-date-adapter. d.ts

javascript - 动画元素 Angular 不消失

javascript - $apply 中的 Angularjs 性能问题,但绑定(bind)很快

angular - 禁止在同一表单字段中单击按钮选择打开

Angular Material 对话框垫对话框 Action 位置