Как получить данные из Spark и отобразить с помощью Angular

0

Будучи новичком в инфраструктуре Spark и AngularJS, я пытался создать простое приложение REST. Однако я, по-видимому, не могу получить данные с сервера и отображать с помощью Angular.

Я начал с простой задачи:

@Data
public class Todo {

private String title = "foo";
private String description= "bar" ;
}

Чтобы отобразить todo в браузере, я отправляю объект JSON в качестве ответа на запрос.

get("/tasks", (request, response) ->  {
   response.type("application/json");

   Todo todo = new Todo();
   ObjectMapper mapper =  new ObjectMapper();
   mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
   String data = mapper.writeValueAsString(todo);
   return data;
});

Угловая часть выглядит следующим образом:

(function() {
   var app = angular.module('todoapp', []);

   app.controller('TaskController', ['$http', function($http) {
       var store = this;
       store.tasks = [];

       $http.get('/tasks').success(function(data) {
           store.tasks = data;
       });
   }]);

})();

И index.html:

<ul ng-controller="TaskController as taskCtrl">
   <li ng-repeat="task in taskCtrl.tasks">{{task.title}}, {{task.description}}</li>
</ul>

После запуска Spark и входа в http://localhost: 4567/tasks в браузере он показывает только представление JSON:

{
"title": "foo",
"description": "bar"
}

Что я делаю не так?

Теги:
spark-java

2 ответа

1

В коде Spark вы создаете конечную точку "/tasks", которую вы пытаетесь поразить своим угловым кодом. Когда вы пытаетесь запустить это в браузере, вы просто нажимаете на свою конечную точку api//api, которая возвращает ожидаемый ответ. Вам нужно создать другую конечную точку в Spark, которая будет обслуживать соответствующий код HTML и JavaScript.

  • 0
    иначе вы можете добавить HTML-страницу с JQuery в корневом каталоге
  • 0
    Также правильно, вам нужна конечная точка сервера для получения html / js. Если вы не хотите, чтобы код сервера делал что-либо, кроме обработки статического файла, вы можете воспользоваться этим подходом. Но я предполагаю, что вам понадобится фактический маршрут, настроенный в Spark, который будет включать этот HTML
0

Я не уверен, какая версия углового вы используете, но в версии, которую я использую, $http возвращает другую структуру данных, чем та, которую вы показываете.

Поэтому, чтобы получить данные из запроса $http я бы сделал что-то вроде:

$http({
    url: '/tasks',
    method: 'get'
}).then(function(result){
    $scope.tasks = result.data;
});

Данные result.data - это то, где структура данных в отчетах $http отличается от того, что я вижу в вашем коде.

Попробуйте console.log(data) чтобы посмотреть, как возвращается звонок.

  • 0
    Синтаксис исходного постера - это ярлык. Вот ссылка в угловых документах: https://docs.angularjs.org/api/ng/service/$http#get
  • 0
    Ах, хорошо, спасибо за информацию.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню