Вызов ngDialog из контроллера ngDialog не работает
У меня есть модал ngDialog, который показывает загруженное изображение и позволяет пользователям комментировать. Вот как я это называю:
$scope.openShowPic = function (imageName, imagedescription, username, imagelikeslength, comments, imageid) {
$scope.imageName = imageName;
$scope.imageDescription = imagedescription;
$scope.username = username;
$scope.imagelikeslength = imagelikeslength;
$scope.comments = comments;
$scope.imageid = imageid;
ngDialog.open({ template: 'views/showpic.html', scope: $scope,
className: 'ngdialog-theme-mine dialogwidth800', controller:"ShowPicController" });
};
Если срок действия токена пользователя истекает до того, как он отправит комментарии, у меня есть обработчик ошибок, который обнаруживает состояние ошибки 401, а затем проверяет, что пользователь вышел из системы и закрывает showPic ngDialog. Затем он открывает логин ngDialog, чтобы пользователь мог войти.
$scope.submitComment = function () {
CommentFactory.save({id: $scope.imageid}, $scope.mycomment)
.$promise.then(
function (response) {
console.log(response);
},
function (error) {
console.log('error');
if (error.status == 401){
AuthFactory.logout();
$scope.loggedIn = false;
$scope.username = '';
ngDialog.close();
ngDialog.open({ template: 'views/login.html', scope: $scope,
className: 'ngdialog-theme-default', controller:"LoginController" });
}
});
$scope.commentForm.$setPristine();
$scope.mycomment = {
comment: ""
};
};
К сожалению, логин ngDialog не связывается с LoginController, так как ничего не происходит, когда пользователь нажимает на логин. Код для вызова имени входа ngDialog точно такой же, как я использую в заголовке, и который работает нормально. Очевидно, я что-то сломал, но не вижу, что! Благодарю.
1 ответ
Хорошо, я попытался заставить логин ngDialog работать из-за ошибки в обещании, но безрезультатно. В конце концов я нашел лучший способ решения этой проблемы - установить логическое значение в функции ошибки, а затем открыть логин ngDialog в зависимости от результата логического значения.
$scope.submitComment = function () {
$scope.needLogin = false;
CommentFactory.save({id: $scope.imageid}, $scope.mycomment)
.$promise.then(
function (response) {
console.log(response);
},
function (error) {
console.log('error');
if (error.status == 401){
AuthFactory.logout();
$scope.loggedIn = false;
$scope.username = '';
$scope.needLogin = true;
}
});
$scope.commentForm.$setPristine();
$scope.mycomment = {
comment: ""
};
if ($scope.needLogin == true) {
ngDialog.open({ template: 'views/login.html', scope: $scope,
className: 'ngdialog-theme-default', controller:"LoginController" });
};
};
}])