以编程方式关闭所有ui-select下拉列表?

时间:2017-09-20 22:25:19

标签: angularjs angular-ui-bootstrap bootstrap-modal angular-ui-select

我正在尝试构建一个指令,使角度UI $ uibModal可拖动。而且我想关闭模态体中ui-select的所有打开的下拉列表,当模态拖动时。

有谁知道如何关闭ui-select中的所有$uibModal列表?

jsbin https://jsbin.com/lopitopiwa/edit?html,js,output

angular.module('myApp').directive('uibModalDragging',[
    UibModalDragging
]);


function UibModalDragging() {
    return {
        restrict: 'A',
        scope: false,

        link: function (scope, iElem, iAttrs) {
            $(iElem).closest('.modal-content').draggable({
                handler: '.panel-heading',
                start: onStart
            })
        }
    };

    function onStart() {
        //*********************************************
        //close all ui-select ???
    }
}

1 个答案:

答案 0 :(得分:2)

这是更好的方法,但你需要根据这个创建另一个指令:

https://github.com/angular-ui/ui-select/wiki/Accessing- $选择

angular.module('myApp').directive('myUiSelect', function() {
  return {
    require: 'uiSelect',
    link: function(scope, element, attrs, $select) {
      scope.$on('closeAll', (ev,val)=>{
        $select.close();
      });
    }
  };
});

然后将其添加到您的元素中:

<ui-select my-ui-select ng-model="selected.value">
                    <ui-select-match>
                        <span ng-bind="$select.selected.name"></span>
                    </ui-select-match>
                    <ui-select-choices repeat="item in myModalCtrl.itemArray">
                        <span ng-bind="item.name"></span>
                    </ui-select-choices>
              </ui-select>

之后只是广播事件来关闭所有示例:

https://jsbin.com/cadekafata/1/edit?html,js,console,output