5
angular 
.module('angProj') 
.controller('UserCtrl', 
    ['$scope', '$uibModal', 
     function ($scope, $uibModal) { 

      $scope.results = function (content, completed) { 
       var modalInstance = $uibModal.open({ 
         backdrop: 'static', 
         keyboard: false, 
         animation: $scope.animationsEnabled, 
         templateUrl: '/Scripts/angularApp/views/user-modal.html', 
         controller: 'UserModalCtrl', 
         resolve: { 
          items: function() { 
           return $scope.items; 
          } 
         } 
        }); 

       if (!completed || content.length === 0) { 
        return; 
       } 

     modalInstance.close(); 
     modalInstance.dismiss('cancel'); 

Я не могу закрыть модель при добавлении пользователя. В пользовательском режиме я показываю индикатор выполнения. Код работает нормально без ошибок, но модально остается открытым , Я также попытался $ uibModalInstance но контроллер бросает ошибка: неизвестный поставщик (не способный придать $ uibModalInstance на тот же UserCtrl) Я инъекционный ui.bootstrap (ще-самозагрузка-ВДА-1.1.2.js)

спасибо за ваше время.

+0

Вы должны закрыть modal от вашего контроллера модального контроллера: 'UserModalCtrl'' и ввести '$ uibModalInstance' там – klskl

+0

@klskl Я делаю tht ... У меня есть кнопка отмены и ее закрытие модального оттуда .. но при завершении процесса я хочу, чтобы модальная функция автоматически закрывалась .. без какого-либо взаимодействия с пользователем (например, нажатие кнопки отмены) – Scorpio

+0

вы должны использовать $ uibModalInstance в модальном контроллере (UserModalCtrl в вашем случае) ... –

ответ

5

Использование modalInstance.close() внутри UserModalCtrl контроллера

app.controller('UserModalCtrl', ['$scope', '$modalInstance' function($scope ,modalInstance { 
    $scope.close = function() { 
    modalInstance.close(); 
    }; 
}]); 
+0

thts работает нормально, но я хочу закрыть после этого условия, если (! завершено || content.length === 0) – Scorpio

0

я сделал что-то подобное, я думаю.

У меня есть $modal контроллер, который выглядит следующим образом

angular.module('myApp').controller('infoCtrl', function ($scope, $uibModalInstance, loading) { 

    $scope.editable = loading; 

    $scope.$watch('editable.status', function(newValue, oldValue) { 
    if (newValue == 'success'){ 
     // close modal 
     $uibModalInstance.close('ok'); 
    } else if (newValue == 'error') { 
     // show error message 
    } 
    }); 
}); 

Вводимый loading это услуга, которая выглядит следующим образом

myApp.factory('loading', function() { 
    return { 
    status: '' 
    } 
}); 

И когда я изменить статус моей загрузки сервиса «успеха '(нигде, а не модальный контроллер) модальный закрыт.

Я не знаю, было ли это именно то, о чем вы просили, но я надеюсь, что это тоже помогает, просто спросите, что-то непонятно!

EDIT: Так скажем, у вас есть услуга со значением isCompleted: false, вводят эту услугу в свой модальный контроллер, а также использовать функцию $watch, то при том, что isCompleted изменяется на true, вы закрываете модальный.

Смежные вопросы