Я создал кнопкуAngularJS закрытия DIV, который показывает на нг нажмите
<button type="button" ng-click="chooseOptions()" id="chooseOptionButton" ng-bind="whatToDisplay()"></button>
который показывает <div ng-show=appearOnChoice>
по щелчку и переключает обратно при нажатии еще раз!
$scope.chooseOptions=function(){
$scope.appearOnChoice=!$scope.appearOnChoice;
}
Однако, я также хочу этот элемент, чтобы скрыть еще раз, когда пользователь щелкает где-нибудь за пределами этого div
элемента. Как я могу это сделать? Мне нужно строго придерживаться AngularJS и не использовать jQuery.
Надеюсь, вы можете мне помочь в этом.
EDIT: Я пытался адаптировать некоторые из событий начальной загрузки DatePicker, но я не уверен, как применять его правильно
$scope.$on('datepicker.focus', focusElement);
scope.$watch('isOpen', function(value) {
if (value) {
scope.$broadcast('datepicker.focus');
scope.position = appendToBody ? $position.offset(element) : $position.position(element);
scope.position.top = scope.position.top + element.prop('offsetHeight');
$document.bind('click', documentClickBind);
} else {
$document.unbind('click', documentClickBind);
}
});
var focusElement = function() {
$timeout(function() {
self.element[0].focus();
}, 0 , false);
};
Как я могу адаптировать это к моему делу ?!
Я приближаюсь к вашему решению. Разумеется, размытие - отличная идея. Но я должен упомянуть, что как только div будет виден, и я нажимаю на него, кнопка теряет фокус, и в то же время div тоже не получает фокуса. Поэтому, похоже, это невозможно. – Dribel
Я думаю, что это одна из основных проблем. Было бы неплохо просто установить фокус на div через DOM. Я не уверен, что вы можете установить фокус на div, щелкнув, поскольку он не является элементом ввода. EDIT: добавление tabindex в div может помочь.Проверьте [эта ссылка] (http://stackoverflow.com/a/148444/2719246) – Beartums
Талиндекс не работает, к сожалению. В любом случае спасибо!!!! – Dribel