我需要在特定事件上打开角度材料md-autocomplete下拉列表。有没有办法做到这一点?
我已经获得了md-autocomplete,其基本设置类似于此http://codepen.io/paucaverba/pen/GpogPv?editors=101
<div ng-controller="DemoCtrl as ctrl" layout="column" class="autocompletedemoBasicUsage" ng-app="MyApp">
<md-autocomplete md-selected-item="ctrl.selectedItem" md-search-text="ctrl.searchText" md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.display" md-min-length="0" placeholder="What is your favorite US state?">
<md-item-template>
<span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
</md-item-template>
<md-not-found>
No matches found for "{{ctrl.searchText}}".
</md-not-found>
</md-autocomplete>
<br>
<button class="md-button md-raised"> open </button>
</form>
如果我点击控件本身,它将打开下拉列表。当我点击“打开”按钮
时,我想要相同的行为答案 0 :(得分:1)
将id="auto_complete_id"
属性提供给md-autocomplete
你可以尝试这样的事情:(经过测试。这应该有效。但这不会对codepen起作用,它会在控制台中引发错误)
codepen(Looking up elements via selectors is not supported by jqLite!
)
在原生浏览器上测试。
<强> HTML:强>
<button ng-click=openAutocomplete()> Open </button>
<强> JS:强>
$scope.openAutocomplete=function(){
setTimeout(function(){
angular.element('#auto_complete_id').find('input').focus();
},0);
}
答案 1 :(得分:1)
对autocompleteDirective和autocomepleteController进行简单修改以公开指令属性,例如 md-focus 和 md-blur 将允许消费者控制器对这些事件进行操作< / p>
答案 2 :(得分:0)
我知道这是一个迟到的答案,但如果有人应该找到这个答案,那么上面的问题主要是选择元素。
在当前示例中(问题中的CodePen中给出),如果
,整个过程似乎都有效angular.element('#testId').focus();
更改为
document.querySelector('#testId').focus();
甚至
document.getElementById('testId').focus();
这是由于jqLite的限制,并且(在我看来)可以使用基于jQuery样式选择器的查找的假设,而不是在适当的时候使用正确的方法。
答案 3 :(得分:0)
您可以通过将按钮点击代码更改为
来实现您的目标var elem = angular.element( document.querySelector( '#testId' ) );
elem.focus();
最小化和直接目的。
此致