2016-08-23 3 views
0

В моем текущем проекте для выхода из системы я хочу добавить подтверждение. Для подтверждения я хочу сладкое предупреждение. Я нашел решение для подтверждения и сладкого оповещения отдельно, но мне сложно совместить эти два. HTML:Есть ли способ объединить угловые js подтвердить и сладкое предупреждение (swal)

<a href="javascript:void(0);" ng-click="Logout()"><i class="fa fa-sign-out" aria-hidden="true"></i> Logout</a> 

ЯШ:

app.controller('LogoutCtrl', ['$scope', '$location', 'localStorageService', function($scope, $location, localStorageService) { 
    $scope.Logout = function() { 
     swal({ 
       title: "Are you sure to logout?", 
       text: "", 
       type: "warning", 
       showCancelButton: true, 
       confirmButtonColor: '#DD6B55', 
       confirmButtonText: 'Yes', 
       cancelButtonText: "No", 
       closeOnConfirm: false, 
       closeOnCancel: false 
      }, 
      function(isConfirm) { 
       if (isConfirm) { 
        localStorageService.clearAll(); 
     $location.path('/login'); 

       } 
      }); 
    } 
}]); 

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

Code in action

+0

это то, что вам нужно https://github.com/oitozero/ngSweetAlert – Vanojx1

+0

@ Vanojx1 .. Да, у меня оно есть. Моя проблема заключается в том, что я не могу связать эту сладость с логикой выхода из системы. Когда пользователь нажимает кнопку выхода из системы, я хочу, чтобы во время всплывающего окна было подтверждено подтверждение сладости, и только при завершении проверки. –

+0

попробуйте добавить $ scope. $ Apply() после $ location.path ('/ login'). – ziaulain

ответ

0

там может быть функцией внутри другой функции в JavaScript

function(){ 
     function abc(){ 
     } 


     //use abc() as much as you want    
} 
+0

Я не ломаю, чтобы понять ваше заявление о проблеме ... можете ли вы более конкретно – jayanthCoder

+0

Да, я знаю, что внутри фанцитона не может быть другой функции. Я ищу обходной путь для этого. –

+0

5th one here .... http: //oitozero.github.io/ngSweetAlert/#/home – jayanthCoder

0

Вы имеете особый случай, когда вы делаете изменения в location пути, не давая угловой знать, что что-то есть изменения, в конечном счете цикл переваривания не загорается. Вы должны запустить цикл дайджест вручную, чтобы сделать изменения location, чтобы понять угловой маршрутизатор. Для запуска переваривать цикл можно использовать $timeout (впрыснуть внутри контроллера перед его использованием)

var ctrl = function($scope, $location,$timeout) { 

    swal({ 
     title: "Are you sure to logout?", 
     text: "", 
     type: "warning", 
     showCancelButton: true, 
     confirmButtonColor: '#DD6B55', 
     confirmButtonText: 'Yes', 
     cancelButtonText: "No", 
     closeOnConfirm: true, //it should be true to close popup on confirm 
     closeOnCancel: true //it should be true to close popup on cancel 
    }, 
    function(isConfirm) { 
     if (isConfirm) { 
     $timeout(function(){ 
      localStorageService.clearAll(); 
      $location.path('/login');   
     }); 
     } 
    }); 
} 

Code In Action


Вы можете посмотреть на this answer, а также, чтобы реализовать swal предупреждение в угловой, который будет внутренне обрабатывать дайджест цикла вещь внутри.

+0

... есть функция внутри функция. Это будет работать ? –

+0

@samjhanajoshi Функция, которая есть в swal', является функцией обратного вызова, переданной в плагин 'swal', 1-й - это обратный вызов успеха (вызванный« Ok »), второй отменит обратный вызов, он должен работать –

+0

ok Я вас сейчас. но он не работает. Даже я нажимаю «Да» или «Нет», он не вводит функцию isConfirm. –