2015-01-22 2 views
3

У меня есть Модальное окно в моем заголовке, с ссылкой на ссылку Click в моем заголовке, чтобы открыть и закрыть окно модального ... и это отлично работает. То естьФункция углового вызова Modal Open от одного контроллера к другому

<div class="header" ng-controller="headerCtrl"> 
... 
      <li><a href ng-click="open()">Report an Issue</a></li> 
... 
</div> 

, а затем мои контроллеры

.controller('headerCtrl', ['$location', '$scope', '$log', '$modal', function ($location, $scope, $log, $modal) { 
    'use strict'; 
    (function() {// init 
     $scope.open = function (size) { 
     var modalInstance = $modal.open({ 
      templateUrl: 'views/help/supportModalContent.html', 
      controller: 'supportInstanceCtrl' 
     }); 
     }; 
    })(); 
    }]) 

    .controller('supportInstanceCtrl', ['$location', '$scope', '$log', '$modalInstance','$state', function ($location, $scope, $log, $modalInstance,$state) { 
    'use strict'; 
    (function() {// init 
     $scope.ok = function() { 
     $modalInstance.close($scope.selected.item); 
     }; 
     $scope.isCollapsed = false; 
     $scope.message_sent = false; 
    })(); 

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

    $scope.faq = function() { 
     $modalInstance.close('cancel'); 
     $state.go('faq'); 
    }; 

    $scope.help = function() { 
     $modalInstance.close('cancel'); 
     $state.go('help'); 
    }; 

    $scope.send = function() { 
     $scope.isCollapsed = true; 
     $scope.message_sent = true; 
    }; 
    }]) 

Проблема теперь в одном из моего главного вида контента, теперь я также ссылку, которая говорит что-то нажмите здесь для поддержки. И я хочу снова открыть такое же модальное окно. Так что я сделал это

.controller('noResultCtrl', ['$location','$scope','$log','search','$state','$modal',function ($location,$scope,$log,search,$state,$modal) { 
    'use strict'; 
    $scope.open = function (size) { 
     var modalInstance = $modal.open({ 
     templateUrl: 'views/help/supportModalContent.html', 
     controller: 'supportInstanceCtrl' 
     }); 
    }; 
    }]) 

И это работает, но есть лучший способ, а того, чтобы поставить эту же логику в каждых контроллерах я хочу вызвать то же модальное окно в заголовке?

+0

да .. создать сервис для этого .. – Ved

ответ

7
app.service('modalProvider',['$modal', function ($modal){ 

this.openPopupModal= function() { 
var modalInstance = $modal.open({ 
      templateUrl: 'views/help/supportModalContent.html', 
      controller: 'supportInstanceCtrl' 
     }); 
} 

Включите эту услугу в контроллерах, и вызвать openPopupModal method.For пример:

.controller('noResultCtrl', ['$location','$scope','$log','search','$state','modalProvider',function ($location,$scope,$log,search,$state,modalProvider) { 
    'use strict'; 
modalProvider.openPopupModal(); 
Смежные вопросы