2015-03-20 2 views
0

Я работаю над сайтом, который использует WEB API (с бэкэнда C#) и использует AngularJS в интерфейсе. В какой-то момент у меня есть ng-click, который открывает Modal и предупреждает пользователя, что он будет удалить все записи тестов (не беспокойтесь об этом слишком много).AngularJS и использование одного модального для нескольких функций

После нажатия кнопки Приступить к sproc называется (из веб-API контроллер-> сервис-> EDMX sproc) и т.д. Во всяком случае, у меня есть еще две другие кнопки, которые делают то же самое (отображать модальное, но с немного другая формулировка) и называть тот же самый sproc, но после того, как sproc срабатывает, он перенаправляется на другую страницу.

Можно ли использовать один модальный, с различными шаблонных-URLs и перенаправлять на разные страницы, когда пользователь щелкает проследовать/модальный закрывается в зависимости от нажатой кнопки?

P.S. Модификации примечаний, а не модели

ответ

1

Я написал для этой ситуации повторно используемую директиву.

Это позволяет передавать в различных шаблонных URLs

<a template-link="/html/delete.html" confirm-dialog="deleteElement()">Delete</a> 


'use strict'; 
/*global angular,console,$:false*/ 

angular.module('testmodule'). 

directive(confirmDialog', ['$modal', function($modal) { 


    var modalInstance = null; 

    var ModalCtrl = function($scope, $modalInstance) { 
     $scope.ok = function() { 
      $modalInstance.close(); 
     }; 

     $scope.cancel = function() { 
      if (angular.isDefined(modalInstance) && modalInstance !== null) { 
       $modalInstance.dismiss('cancel'); 
      } 
     }; 

     }; 

     return { 
      restrict: 'A', 
      scope: { 
       confirmDialog:"&", 
       tLink: '@templateLink' 
      }, 
      link: function(scope, element, attrs) { 

       element.bind('click', function() { 

        modalInstance = $modal.open({ 
         scope: scope, 
         templateUrl: tLink, 
         controller: ['$scope', '$modalInstance', ModalCtrl], 
         backdrop: 'static', 
         keyboard: false, 

        }); 

        modalInstance.result.then(function() { 
         scope.confirmDialog(); 
        }, function() { 
         //Modal dismissed 
        }); 
       }); 
      } 
    }; 
}]); 
Смежные вопросы