2015-06-04 6 views
3

Чтобы автоматически закрыть ngDialog после успешного входа в систему, я использовал подход ниже.Автоматически закрыть ngDialog

HTML шаблон,

<a href="" ng-click="signin()">Log In</a> 
<a href="" id="btnClose" ng-click="closeThisDialog()" 
style="display:none;">Close</a> 

В контроллере метод signin имеет следующий код, чтобы вызвать событие щелчка кнопки закрытия,

$timeout(function() { 
    var btnClose = document.getElementById('btnClose'); 
    angular.element(btnClose).triggerHandler('click'); 
}, 0); 

Есть ли лучший подход, чтобы закрыть ngDialog автоматически?

ответ

0
// inside dialog's controller 
function sigin() { 
// do sigin 
    .then(function() { 
     that.closeThisDialog(); 
    }) 

} 

// Page's controller 
var dialog = ngDialog.open({ 
    template : 'scripts/modals/signup.tpl.html', 
    ... 
    etc. 
}); 
+0

что это значит? – AlainIb

1

Вы можете просто использовать closeThisDialog, как показано ниже в вашем методе signin. Это закроет диалоговое окно после нажатия кнопки входа в систему.

$scope.signin = function() { 
    $scope.closeThisDialog(); 
}; 
1

Я создал небольшую директиву для такого рода вещи:

app.directive('closeDialog', function(ngDialog, $timeout) { 
    return { 
    link: function(scope, element, attrs) { 
     if(attrs.closeDialog) { 
     $timeout(function(){ngDialog.close()}, attrs.closeDialog * 1000); 
     } 
     element.bind('click', function(element) { 
     ngDialog.close(); 
     }) 
    } 
    } 
}); 

Вы можете использовать его, просто добавьте директиву в пользовательском закрывающий тег:

<button close-dialog="5">Close</button> 

Этот диалог закрыть через 5 секунд.

+0

очень хорошее решение! – nicogaldo

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