Как установить родительскую переменную области видимости после модального скрытия - PullRequest
0 голосов
/ 11 ноября 2019

Я сделал директиву 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. Как я могу установить родительскую область видимости, прежде чем закрыть модал?

...