2016-02-05 2 views
0

Я пытаюсь внедрить автоматическое оповещение в свое приложение AngularJS с помощью Angular-Strap и сервиса $alert. Тем не менее, пока все хорошо, я остался с проблемой, которую я не могу решить.Оповещения с угловым ремешком: невозможно захватить, когда alert.hide() триггеров

Есть ли способ, которым я могу установить обратный вызов для захвата, когда $alert скрыт либо с использованием свойства duration, либо команды alert.hide()? Я хочу запустить функцию, когда предупреждение переходит в скрытое состояние.

Мои фрагменты кода выглядит следующим образом:

var alertContent = ''; 


     // Define the critical alert 
     var criticalAlert = $alert({ 
          templateUrl: 'templates/critical.alert.tpl.html', 
          title: ' Critical Alert Detected!', 
          content: alertContent, 
          container: 'body', 
          type: 'danger', 
          dismissable: false, 
          duration: '20', 
          show: false 
         }); 

...

alertContent = 'Foo Bar!'; 

...

criticalAlert.$promise.then(criticalAlert.hide); 

...

$scope.$on('alert.hide', function() { 
      console.log('Alert Hidden'); 
     }); 
+0

Я нашел правильное решение вашей проблемы? –

ответ

0

Результат $promise, вы можете передать свою собственную функцию, например:

criticalAlert.$promise.then(function(){criticalAlert.hide();console.log('Alert Hidden'); }) 

Подробнее о $promiseanglular $q

UPDATE

Вы можете использовать $watch.

Конечно, это нехорошее решение, но лучшее, что я нашел. По крайней мере, это работает!

var alert = $alert({ 
    title: ' Critical Alert Detected!', 
    content: 'its Alert!', 
    container: 'body', 
    type: 'danger', 
    dismissable: false, 
    duration: '5', 
    show: false, 
}); 
$scope.$watch(function(){return alert.$isShown;},function(val){ 
    if(val===true) 
    console.log('alert opened',val); 
    else 
    console.log('alert closed',val); 
}); 
alert.$promise.then(alert.show); 

ОБНОВЛЕНО 2

Мы можем использовать event угловой.

Живой пример на jsfiddle.

.controller('ExampleController', function($scope, $alert) { 
$scope.alert = $alert({ 
    title: ' Critical Alert Detected!', 
    content: 'its Alert!', 
    container: '#divForAlert', 
    type: 'danger', 
    dismissable: false, 
    duration: '5', 
    show: false, 
    prefixEvent:"mymodal", 
}); 
$scope.alert.$promise.then(function() { 
    $scope.alert.show(); 
}); 
$scope.$root.$on('mymodal.hide.before', function(event) { 
    console.log('hide before',event); 
}); 
$scope.$root.$on('mymodal.hide', function(alert) { 
    console.log('hide',alert); 
});}); 

И некоторые важно HTML

<div ng-controller="ExampleController"> 
<h3> 
    ExampleController 
</h3> 
<form name="ExampleForm" id="ExampleForm"> 
    <div id="divForAlert"> 

    </div> 
</form> 

+0

Как насчет того, когда он автоматически закрывается из-за свойства продолжительности? – Riples

+0

Кроме того, есть ли способ захватить .hide.before()? – Riples

+0

Я обновил свой ответ. Проверять, выписываться. –

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