저는 각도가 완전히 새롭고 프로젝트에서 angular-bootstrap-datetimepicker를 사용하려고합니다. 내 HTML 코드는 다음과 같습니다.angular-bootstrap-datetimepicker 바깥 쪽을 클릭하면 닫음
<span class="input-group-btn" ng-class="{open: openedDP}">
<button type="button" class="btn btn-default btn-sm" ng-click="open()">
<i class="glyphicon glyphicon-calendar"></i>
</button>
<ul class="dropdown-menu" role="menu">
<datetimepicker ng-model="abc"
on-set-time="close(new, old)">
</datetimepicker>
</ul>
</span>
<input id="abc" ng-model="abc" class="form-control" date-time-input="DD-MM-YYYY HH:mm:SS" />
사용자가 바깥 쪽을 클릭하면 캘린더를 닫고 싶습니다. 나는 거의 ui.bootstrap의 코드를 복사하여 붙여 넣었다. 원래 하나의 지시문 내부 및 다음과 같습니다 (컨트롤러 내부)
var documentClickBind = function(event) {
if (scope.isOpen && event.target !== element[0]) {
scope.$apply(function() {
scope.isOpen = false;
});
}
};
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 documentClickBind = function (event) {
if ($scope.openedDP) {
$scope.$apply(function() {
$scope.openedDP = false;
});
}
};
$scope.$watch('openedDP', function (value) {
if (value) {
$timeout(function() {
$document.bind('click', documentClickBind);
}, 0, false);
} else {
$document.unbind('click', documentClickBind);
}
});
내가 제거 "요소"변수 내가 내 컨트롤러에이 없기 때문에 그것은 보인다 일할 수는 있지만 왜 그런지 모르겠습니다. 우연히 만난 것일까 요? 캘린더 내부를 클릭하는 것이 다른 곳을 클릭하는 것과 다른 이유는 무엇입니까? 또한 페이지에 여러 개의 datepickers가있을 때 이와 같은 여러 함수를 만드는 것을 피하기를 원합니다.
[this datetimepicker] (https://dalelotts.github.io/angular-bootstrap-datetimepicker/)를 언급 한 것 같습니다. 그게 기본 동작입니다, 맞습니까? – Paritosh
이 코드가 없으면 같은 단추를 다시 클릭하여 달력을 닫아야합니다. –