javascript - 单击时防止在特定条件下打开 md-select 下拉菜单

标签 javascript angularjs material-design angular-material

我有一个问题,我试图阻止 md-select 在特定条件下打开,而是显示一个警告对话框。

我可以通过以下方式禁用 md-select

ng-disabled="controller.unsavedChangesMade"

但我宁愿避免这种情况,而是允许用户在显示对话框的情况下单击下拉菜单,而不打开 md-select 项目列表。如果我删除 ng-disabled,则会显示对话框和项目下拉列表。

<md-input-container>
    <label>Select Item</label>
    <md-select ng-disabled="controller.unsavedChangesMade" ng-model = "selectedItem" ng-click="controller.handleItemChange(selectedItem.name, $event)" aria-label="Selected Item">
        <md-option ng-repeat = "(index,item) in controller.items" ng-value = "item"
                   ng-click = "controller.getItemByCategory(item.name)">
            {{item.name}}
        </md-option>
    </md-select>
</md-input-container>

我研究过使用

$event.stoppropagation() 

但我无法让它停止打开下拉列表。

我不确定这是否可行,但我们将不胜感激,

谢谢

最佳答案

您可以将 event.stoppropagation()md-on-open 属性一起使用 - CodePen

<div ng-controller="AppCtrl as ctrl" class="md-padding selectdemoBasicUsage" ng-cloak="" ng-app="MyApp">
  <div>
    <div layout="row">
      <md-input-container>
        <label>State</label>
        <md-select ng-model="ctrl.userState" md-on-open="ctrl.test($event)">
            <md-option ng-repeat="state in ctrl.states" value="{{state.abbrev}}">
              {{state.abbrev}}
            </md-option>
          </md-select>
      </md-input-container>
    </div>
    <md-button ng-click="ctrl.toggle()">Toggle</md-button>
  </div>
</div>

JS

(function () {
  'use strict';
  angular
      .module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
      .controller('AppCtrl', function() {
        this.unsavedChangesMade = false;

        this.toggle = function () {
          this.unsavedChangesMade = !this.unsavedChangesMade;
        };

        this.test = function (event) {
          if (this.unsavedChangesMade) {
            event.stoppropagation();            
          }
        };

        this.userState = '';
        this.states = ('AL AK AZ AR').split(' ').map(function (state) { return { abbrev: state }; });
      });
})();

关于javascript - 单击时防止在特定条件下打开 md-select 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186911/

相关文章:

javascript - Angular js 中带有 ng-click 的嵌套 Controller

ruby-on-rails - 在 angularjs 上创建的网站的 Seo(谷歌不插入 angularjs 表达式)

angularjs - 带有 ui-router 的 Angular 无限摘要循环

Div 下的 CSS Div

javascript - 使用 JavaScript 隐藏特定日期的面板

javascript - 如何让 Formee 图例边框随着以编程方式添加的 DOM 元素而增长

javascript - AngularJS ng-repeat 在 tbody 中不起作用

css - 表格行的 Material 波纹效果

css - 使用 Google Material Design 的 Summernote

javascript - onClick:在 Facebook 上分享图片