这是结果的屏幕截图:
这是关键的 HTML:
<md-input-container md-no-float flex="30">
<md-select name="favoriteColor" ng-model="color" placeholder="Pick a Color"
ng-init="showOptions=true"
my-on-focus="showOptions"
md-on-close="showOptions=false">
<md-option value="red">Red</md-option>
<md-option value="blue">Blue</md-option>
<md-option value="green">Green</md-option>
</md-select>
</md-input-container>
请注意ng-init
、my-on-focus
和md-on-close
属性。
这是 AngularJS 指令:
app.directive('myOnFocus', function() {
return {
scope: true,
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
elem.bind('focus', function() {
if (scope[attr.myOnFocus]) {
elem.triggerHandler('click');
}
});
elem.bind('blur', function() {
scope[attr.myOnFocus] = true;
});
}
};
});
诀窍是将showOptions
变量设置false
为选择关闭时,这样它就不会再次打开,直到blur
在指令中运行。
这是让选择下拉菜单显示在输入区域下方的 CSS:
md-select-menu {
margin-top: 50px;
}
最后,这是一个工作 Plunker,http ://plnkr.co/edit/FD5u78pC3HbO9UwUOKXR?p=preview 。
希望能帮助到你。如果您有任何问题,请告诉我。