Обновите родителя uibModal, не закрывая его.Обновлять переменные динамически - PullRequest
0 голосов
/ 18 декабря 2018

Есть ли способ обновить родительский контроллер angularjs uibModal и обновить его значение, не закрывая его?Я хочу обновить эту переменную сразу, а не ждать, пока uibModal закроется.Я знаю, что могу использовать функцию разрешения, но это вынуждает меня закрыть модальное окно, чтобы передать что-либо обратно в разрешение для обновления.

Я попытался передать область видимости в uibModal, чтобы обновить эту переменную.Безуспешно.

angular.module('app', [
  'ui.bootstrap'
])

.controller('ctrl', function ($scope, $uibModal) {
  'use strict';
  var vm = this;
  vm.value = false;
  
  
  $scope.openModal = function () {
    $uibModal.open({
      template: '<div class="modal-header">' +
                    '<h3 class="modal-title">Hello</h3>' +
                '</div>' +

                '<div class="modal-body">I\'m a modal!</div>' +

            '<div class="modal-footer">' +
                '<button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button>' +
                '<button class="btn btn-warning" type="button" ng-click="update()">Update</button>' +
            '</div>',
      controller: function ($scope, $uibModalInstance) {
        $scope.update = function() {
          console.log('update vm.value from here right after clicking the button');
        }
      
        $scope.cancel = function () {
          $uibModalInstance.dismiss('cancel');
        };
      }
    })
  };
});
<!DOCTYPE html>
<html>

  <head>
    <link data-require="bootstrap-css@*" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
    <script data-require="angular.js@1.5.0" data-semver="1.5.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.2.4.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-app="app" ng-controller="ctrl" class="container">
    <button class="btn btn-primary" type="button" ng-click="openModal()">Open modal</button>
  </body>

</html>
...