попытка открыть страницу GET из области видимости angularjs - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь вызвать метод get, чтобы открыть страницу в области видимости angularjs. Метод get определен в контроллере пружины. Метод get вызывается успешно, но страница никогда не загружается. Ниже приведен фрагмент

.then(function successCallback(response) {
                    if (response.status == 204) {

                    } else if (response.status == 200) {
                        $scope.nredit = {

                        };
                        $scope.goToView.goToView(); //call the get method here
                    }

вот область, которая вызывает метод GET, но страница никогда не открывается

$scope.goToView = {
                goToView: function () {
                    $http({
                        method: 'GET',
                        url: '/mypage',
                    }).then(function successCallback(response) {
                        if (response.status == 400) {
                            alert('Not allowed to view this page!');
                        } else if (response.status == 200) {
                           // $scope.users = response.data;
                        }
                    }, function errorCallback(response) {
                        alert(JSON.stringify(response));
                    });
                }

            }

вот контроллер get метода, определенный весной

@RequestMapping(value = "/mypage", method = RequestMethod.GET)
    public ModelAndView goToView(ModelAndView model, HttpServletRequest request, HttpSession userSession) throws IOException {  
        model.setViewName("view");
        return model;
    }

почему вид не открывается / загружается при вызове с угла

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете сделать goToView доступным для области ... это своего рода излишне иметь объект с областью видимости с функцией в нем. Вы должны связать обещание для лучшей читаемости.

Замените начальное обещание обработчика успеха на handleResponse, вы не показываете ответ, поэтому он говорит, что происходит.

let getPage = () => {
     return $http({
       method: 'GET',
       url: '/mypage',
    });
}

let goToPage = (response) => {
    if (response.status == 400) {
         alert('Not allowed to view this page!');
    } else if (response.status == 200) {
         $scope.users = response.data;
    }
};

let handleResponse = (response) {
    ... dowhater
   return $scope.goToView();
}

$scope.goToView = () => {
   return getPage()
      .then(goToPage)
}

Я просто прочитал вопрос еще раз - вы не должны запрашивать страницы таким образом. Я думал, что это что-то делает на странице. Это не работает Вы должны использовать маршрутизацию или, если вы используете ui-router, вы можете использовать дерево состояний.

$state.go('mystate')
0 голосов
/ 09 мая 2018

Из документов AngularJS:

Служба $ http - это базовая служба AngularJS, которая облегчает связь с удаленными HTTP-серверами через объект браузера XMLHttpRequest или через JSONP.

Вкратце: с $ http вы делаете запрос AJAX. Так что это вернет вам содержимое целевой страницы (/ mypage) в response.data. Это не вызывает перенаправление.

Вы должны использовать маршрутизацию AngularJS. Вы можете найти пример в этом уроке: https://www.w3schools.com/angular/angular_routing.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...