這裏的結果的屏幕截圖:
這是關鍵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;
});
}
};
});
的訣竅是,當選擇關閉,直到blur
在指令運行它不會再次開到showOptions
變量設置爲false
。
這裏的CSS來獲得選擇下拉菜單出現在輸入區域下面:
md-select-menu {
margin-top: 50px;
}
最後,這裏的工作Plunker,http://plnkr.co/edit/FD5u78pC3HbO9UwUOKXR?p=preview。
希望它有幫助。如果您有任何問題,請告訴我。
謝謝你的朋友。焦點部分的下拉工作正在進行。我修改了一些指令來隱藏暴露的範圍變量和mdOnClose,以便開發人員可以在一個附加屬性中實現它。 http://plnkr.co/edit/m6LGjVronWR2dMQrwGFn?p=preview。請讓我知道如果這是一個正確的方法。但是,CSS更改只是在頂部添加了一個邊距,所以當我選擇其他選項時,下拉菜單仍會覆蓋它。 – jose