mdDialog在AngularJS md autocomplete中显示两次

mdDialog在AngularJS md autocomplete中显示两次,angularjs,angular-material,Angularjs,Angular Material,我正在使用md autocomplete向用户显示数据 <form name="searchForm" ng-submit="$event.preventDefault()"> <md-autocomplete md-no-cache="true" md-selected-item="ctrl.selectedItem" m

我正在使用md autocomplete向用户显示数据

  <form name="searchForm" ng-submit="$event.preventDefault()">
                <md-autocomplete
                    md-no-cache="true"
                    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="enter Name"
                    md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
                    md-selected-item-change="ctrl.selectedItemChange(item,$event)"
                    >
                    <md-item-template>
                        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
                    </md-item-template>

                    <md-not-found>
                       not found anything!
                    </md-not-found>
                </md-autocomplete>
            </form>
我使用self.selectedItem=''在用户单击后清除搜索文本,但这会导致$mdDialog显示两次,并且传递给dialog的项在第二次变为空。如何防止对话框显示两次?
是否有类似于md selected item click的内容?
我想在用户每次单击结果时显示对话框,它只发生一次,当用户选择自动完成值(项目)和“self.selectedItem=”;“selectedItemChange”函数涉及两次。在“selectedItemChange”函数中添加检查“item”值是否为空或未定义

function selectedItemChange(item,ev) {
  if(item !== '' && item !== undefined) {
    $mdDialog.show({
        locals: { drugData: item },
        controller: DialogController,
        templateUrl: 'DIALOG.TMPL.html',
        parent: angular.element(document.body),
        targetEvent: ev,
        clickOutsideToClose: true,
        fullscreen: false  
    });
  }
    self.selectedItem = '';

}  
上面的代码应该可以工作&只会看到一个对话框。若传递给对话框的项仍然为空,则将项的副本传递给对话框。例如..,Angular.copy(item)或Object.assign({},item)

function selectedItemChange(item,ev) {
  if(item !== '' && item !== undefined) {
    $mdDialog.show({
        locals: { drugData: item },
        controller: DialogController,
        templateUrl: 'DIALOG.TMPL.html',
        parent: angular.element(document.body),
        targetEvent: ev,
        clickOutsideToClose: true,
        fullscreen: false  
    });
  }
    self.selectedItem = '';

}