2016-06-14 5 views
1

Я изучаю угловые js, и я пытаюсь загрузить ошибку, модально, всякий раз, когда возникает какая-либо ошибка во время вызова отдыха.Модальный контроллер не вызван

Ниже мой модальное

<div class="modal-header"> 
    <h1>This is the title</h1> 
</div>' 
<div class="modal-body"> 
    {{errormessage}} 
</div> 

Ниже мой родительский контроллер, под которым я определяю состояние ошибки

angular.module('ui.bootstrap.demo').controller('CarouselDemoCtrl', function ($scope, $http, dataShare, $uibModal) { 
    $scope.myInterval = 5000; 
    $scope.noWrapSlides = false; 
    $scope.active = 0; 
    var slides = $scope.slides = []; 
    var currIndex = 0; 

    $scope.sendEnvName = function(data) { 
     dataShare.sendEnvDetails(data); 

     window.location.href = "query/queryboard.html"; 
    } 

    $scope.addSlide = function (envName) { 
     slides.push({ 
      text: envName, 
      id: currIndex++ 
     }); 
    }; 

    $http.get("http://localhost:8080/getEnvList") 
     .success(function (data) { 
      for (var i in data) { 
       $scope.addSlide(data[i].envName); 
      } 
     }) 
     .error(function (error) { 
      $uibModal.open({ 
       templateUrl: 'error/ErrorModal.html', 
       controller: ErrModalInstanceCtrl, 
       size: 'sm', 
       resolve:{ 
        errormessage: function() { 
         console.log('lllllllllllll') 
         return "Some error occured"; 
        } 
       } 
      }); 

      var ErrModalInstanceCtrl = function ($scope, $uibModalInstance, errormessage) { 
       console.log(errormessage) 
       $scope.items = items; 

      }; 
     }); 

}); 

Если я не использую решительность или контроллер, то есть я жесткий код некоторые строки в место заполнителя для сообщения об ошибке, модальное загружается отлично. Я googled, я нашел разные ответы на вопрос о посадке контроллера в кавычки, но это тоже не помогает.

Пожалуйста, помогите мне в этом, не уверен, где я иду не так.

+1

Пробуйте регистрацию вашего модального контроллера. Например: 'angular.module ('ui.bootstrap.demo'). Controller ('ErrModalInstanceCtrl', ErrModalInstanceCtrl);' и затем передать 'ErrModalInstanceCtrl' в качестве строки в параметр' controller: '. (Зарегистрируйте контроллер вне вашего текущего контроллера 'CarouselDemoCtrl') –

+0

Следуйте [этот плункер] (http://plnkr.co/edit/9FyyOlJSj2XPAD0aax5Z) и скажите, работает ли он в вашем случае. –

+1

@GabrielHobold ... он работает, когда объявлен за пределами CarouselDemoCtrl, это означает, что в угловом мы не можем иметь вложенные контроллеры? –

ответ

1

Вы должны зарегистрировать модальный контроллер вне вашего текущего контроллера, а затем передать имя в controller в $uibModal.open.

Как это:

// REGISTER THE MODAL CONTROLLER HERE 
angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', ModalInstanceCtrl); 
ModalInstanceCtrl.$inject = ['$scope', '$uibModalInstance']; 
function ModalInstanceCtrl($scope, $uibModalInstance) { 

    $scope.item = "I'm your item"; 

    $scope.ok = function() { 
     $uibModalInstance.close(); 
    }; 

    $scope.cancel = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
} 

Ваш контроллер:

var modalInstance = $uibModal.open({ 
     animation: true, 
     templateUrl: 'myModalContent.html', 
     controller: 'ModalInstanceCtrl', // The modal controller name ('ModalInstanceCtrl') 
     size: size, 
     resolve: { 
      errormessage: function() { 
       console.log('lllllllllllll') 
       return "Some error occured"; 
      } 
     } 
    }); 

Plunker here.

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