Я сделал директиву alertForm и хочу установить для 'show' значение 'false' после нажатия клавиши ESC
или click outside of modal
.
Я использую двустороннюю привязку к переменной 'show', чтобы закрыть ее,
<alert-modal show="showAlertModal"></alert-modal>
// controller
$scope.showAlertModal = true;
// directive
common.directive('alertModal', function () {
var temp = '<div class="modal fade" tabindex="-1" role="dialog" data-toggle="modal" aria-labelledby="myModalLabel">\n' +
' <div class="modal-dialog" role="document">\n' +
' <div class="modal-content">\n' +
' <div class="modal-body">\n' +
' <h5>This is message section</h5>\n' +
' </div>\n' +
' <div class="modal-footer">\n' +
' <button type="button" ng-click="clickYesAndHide()">Yes</button>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n' +
' </div>';
return {
restrict: 'E',
scope: {
show: '=',
},
replace: true, // Replace with template
transclude: true, // To use custom content
link: function ($scope, $element, $attr) {
$scope.modalOpen = function () {
$element.modal();
}
$scope.modalClose = function () {
$element.modal('hide');
};
$scope.noDisplay = function () {
$scope.show = false;
}
$scope.clickYesAndHide = function () {
$scope.noDisplay();
}
$element.on('hide.bs.modal', function () {
$scope.noDisplay();
console.log($scope.show); // false;
// But parent's $scope.showAlertModal is 'true'
})
$scope.$watch('show', function () {
$scope.show
? $scope.modalOpen()
: $scope.modalClose()
});
},
template: temp
}
});
Я ожидаю, что родительская область действия show
будет иметь значение false
, но при выводе за пределы модального режима все равно выводится значение true
. Как я могу установить родительскую область видимости, прежде чем закрыть модал?