#javascript #java #html #angularjs
Вопрос:
Я пытаюсь запустить приложение с помощью AngularJS и Ajax. Я также использую Java-контроллер, который возвращает JSON. К сожалению, html не отображает таблицу, я не могу понять, в чем дело, пожалуйста, помогите. Я только начинаю работать с Ajax и AngularJS. Я пытаюсь вывести таблицу в формате Html, вот мои файлы:
Frames.js
var app = angular.module('frames', []); app.controller("FramesController", function ($scope, $http) { $scope.successGetFramesCallback = function (response) { $scope.frameList = response.data; $scope.errormessage=""; }; $scope.errorGetFramesCallback = function (error) { console.log(error); $scope.errormessage="Unable to get list of frames"; }; $scope.getFrames = function () { $http.get('/mcga/frames').then($scope.successGetFramesCallback, $scope.errorGetFramesCallback); }; });
frames.html:
lt;!DOCTYPE htmlgt; lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"gt; lt;headgt; lt;meta charset="utf-8"gt;lt;/metagt; lt;meta http-equiv="X-UA-Compatible" content="IE=edge"gt;lt;/metagt; lt;titlegt;Schools in our universitylt;/titlegt; lt;script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"gt;lt;/scriptgt; lt;script src="js/frames.js"gt;lt;/scriptgt; lt;/headgt; lt;body ng-app="frames" ng-controller="FramesController"gt; lt;h1gt;Компьютерные корпусаlt;/h1gt; lt;div ng-controller="getFrames" ng-show="frameList.length gt; 0"gt; lt;table id="frameTable"gt; lt;theadgt; lt;trgt; lt;thgt;lt;h2gt;Idlt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Companylt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Modellt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Pricelt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Amountlt;/h2gt;lt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;tr ng-repeat="frame in frameList" id="{{frame.id}}"gt; lt;tdgt;{{frame.id}}lt;/tdgt; lt;tdgt;{{frame.company}}lt;/tdgt; lt;tdgt;{{frame.model}}lt;/tdgt; lt;tdgt;{{frame.price}}lt;/tdgt; lt;tdgt;{{frame.amount}}lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;/divgt; lt;/bodygt; lt;/htmlgt;
и мой контроллер написан на java, он получает список из базы данных и возвращает его в JSON, он отлично работает. Мне возвращается JSON. Вот код:
@RestController public class MyController { @Autowired private Service service; @GetMapping("mcga/frames") public ResponseEntitylt;Objectgt; showAllFrames() { Listlt;framegt; frameList=service.getAllFrames(); return ResponseEntity.ok(frameList); } }
И мой конфигурационный контроллер:
@Configuration public class ControllerConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/frames").setViewName("frames"); } }
Ответ №1:
Вы неправильно поставили ng-контроллер. Это должен быть FramesController: что-то вроде этого
lt;div ng-controller="FramesController" ng-show="frameList.length gt; 0"gt; lt;table id="frameTable"gt; lt;theadgt; lt;trgt; lt;thgt;lt;h2gt;Idlt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Companylt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Modellt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Pricelt;/h2gt;lt;/thgt; lt;thgt;lt;h2gt;Amountlt;/h2gt;lt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;tr ng-repeat="frame in frameList" id="{{frame.id}}"gt; lt;tdgt;{{frame.id}}lt;/tdgt; lt;tdgt;{{frame.company}}lt;/tdgt; lt;tdgt;{{frame.model}}lt;/tdgt; lt;tdgt;{{frame.price}}lt;/tdgt; lt;tdgt;{{frame.amount}}lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;/divgt;
Комментарии:
1. спасибо, моя ошибка была более прозрачной, я неправильно указал путь к файлу js