Вызов 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" });
        };      
    };           
}])  
Другие вопросы по тегам