Смотрите окно кликов, если условия не приняты - PullRequest
0 голосов
/ 27 ноября 2018

Прямо при первом входе пользователя в мое приложение я отображаю всплывающие условия.Его можно легко закрыть в Dev Tools, и приложение можно свободно использовать.Как можно посмотреть переменную sessionStorage requireTerms?requireTerms изменяется с true на false в зависимости от того, были ли приняты условия.

Я хочу обнаружить щелчок, если модал был закрыт в html-редакторе, и снова открыть всплывающее окно.

Есть ли AngularJS способ настройки конфигурации для этого?

У меня есть эта функция в одном из моих сервисов

var service = this;
service.showTerms = function() {
    $uibModal.open({
        templateUrl: 'app/terms/terms.html',
        controller: 'tsAndCs as vm',
        size: 'md',
        backdrop: false,
        keyboard: false
    }).result.then(function(response) {
    }, function() {
    });
};

, поэтому я могу просто вызвать appState.showTerms(); однако я пытаюсь выяснить, как обнаружить, что это окно было принудительно закрыто, и вызвать функцию.

@ edit Я думал о наличии переменной requireTermsOpened (которая будетбыть установленным в false только тогда, когда пользователь фактически нажимает «Принять»), когда отображается модал и пишет что-то вроде

var requireTerms = sessionStorage.getItem('requireTerms');
var requireTermsOpened = sessionStorage.getItem('requireTermsOpened');
if(requireTerms && requireTermsOpened) {
   appState.showTerms();
}

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы можете попробовать что-то вроде приведенного ниже кода.Также проверьте этот plunker для вашего данного примера сценария.

Контроллер:

  $scope.modelFn = function() {
    var modalInstance = $uibModal.open({
        templateUrl: 'confirmationWindow.html',
        windowClass: 'modal',
        controller: function ($scope, $uibModalInstance) {
          $scope.confirm = function(userAgreement) {
            $uibModalInstance.close(userAgreement);
          };
          $scope.cancel = function() {
            $uibModalInstance.dismiss('cancel');
          };
        },
        size: 'md',
        backdrop: false,
        keyboard: false
    });
    modalInstance.result.then(function(selectedItem) {
      if (selectedItem) {
        alert('Selected check box and clicked OK!');
      }else{
        alert('Clicked OK Button without Selecting Checkbox!');
      }
    }, function() {
        alert('Clicked Cancel button or Considered cancel on click of outside the Model popup window!');
    });
  };

Шаблон:

   <div ng-controller="MainCtrl">
      <script type="text/ng-template" id="confirmationWindow.html">
        <div class="modal-header">
          <h3 class="modal-title">Terms & Conditions</h3>
        </div>
        <div class="modal-body">
          <p>...........</p>
          <p>
          <input type="checkbox" ng-model="userAgreement"/>
          Are you agreed with all terms and conditions?</p>
        </div>
        <div class="modal-footer">
          <button class="btn btn-warning" ng-click="confirm(userAgreement)">Confirm</button>
          <button class="btn btn-default" ng-click="cancel()">Cancel</button>
        </div>
      </script>

      <button class="btn" ng-click="modelFn()">Open Modal</button>
    </div>
0 голосов
/ 27 ноября 2018
$uibModal.open({
        templateUrl: 'app/terms/terms.html',
        controller: 'tsAndCs as vm',
        size: 'md',
        backdrop: false,
        keyboard: false
    }).result.then(function(response) {
      })
      .catch(function() {
         // Here you can add your code, its the event that gets called when the modal is dimissed
    });

Пожалуйста, проверьте это, я вполне уверен, что это поможет вам, извините, если он плохо отформатирован, я думаю, у вас есть идея, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...