2015-07-30 2 views
0

У меня проблема, если вы видите Plunker link, я не знаю, как автоматически закрыть окно, когда я выхожу из директивы.DropDown не закрывается по щелчку

Может ли кто-нибудь дать предложения по его устранению?

Благодаря

+0

Вы можете использовать директиву для прослушивания окна, если щелчок произошел транслирует событие (например, «dropdown: close», который прослушивается в вашем dropdownDirective. Затем dropdownDirective просто вызывает вашу функцию, которая переключает выпадающее меню. – ilmgb

ответ

1

Вот решение по моему комментарию:

http://plnkr.co/edit/2UG1Kj2l3fuVgYXaOB6d?p=preview

У меня есть пользовательский директиву сидит на теле

<body class="container" ng-controller="mainCtrl" dropdown-listener> 

который прослушивает окно для событий щелчка ,

Стреляет событие, которое ваш dropdownDirective слушает:

myApp.directive('dropdownListener', function ($window, $rootScope) { 
      return { 
       restrict: 'A', 

     link: function(scope, element, attr) { 
      var w = angular.element($window); 

      w.bind('click', function(){ 
      $rootScope.$broadcast('dropdown:close'); 
      }); 
       } 
      } 
     }); 

В ваших dropdownDirective

$scope.$on('dropdown:close', function (event, data) { 
    $scope.$apply(function() { 
     if($scope.open) { //only close when it is open 
     $scope.open = !$scope.open; //quick and dirty solution - withouth apply it didn't work. Maybe you could investigate further 
     } 
     }); 
    }) 
+0

Я понимаю, , но зачем применять этот код, (на вас ссылка plunker), i ca не выберите элемент, который находится в раскрывающемся списке ?, щелкните по элементам?. спасибо – Julio

+0

Затем просто используйте '$ event.stopPropagation()', как показано в LoC 8 в вашем dropdownView.html 'Select...' на функциях, чтобы отключить разворачивание события в dropdDownListener. – ilmgb

+0

Обновлено plnkr соответственно. Использует теперь функцию $ event.stopPropgation для всех выпадающих функций. – ilmgb

Смежные вопросы