Angularjs 春靴路线

Angularjs 春靴路线,angularjs,spring,spring-boot,ngroute,Angularjs,Spring,Spring Boot,Ngroute,我正在尝试制作一个单页应用程序,它有一个弹性后端和一个AngularJS前端。我遵循了教程并查找了类似的问题,但ngRoute似乎不适用于弹性后端(我使用NodeJS后端) index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Spring Demo</title> <script s

我正在尝试制作一个单页应用程序,它有一个弹性后端和一个AngularJS前端。我遵循了教程并查找了类似的问题,但ngRoute似乎不适用于弹性后端(我使用NodeJS后端)

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8"/>
    <title>Spring Demo</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>
    <script src="../static/index.js"></script>
</head>

<body ng-app="index" ng-controller="indexController">
    <a href="/test">test</a>
    <div ng-view=""></div>
</body>

</html>
SringDemoController.java

package com.springdemo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SpringDemoController {

    @RequestMapping({ "/" })
    public String getIndexTemplate() {
        return "index";
    }

}
当我点击链接,URL变为

时,我得到了答案

索引页:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test title</title>
</head>
<body ng-app="TestApp">

    <div>
        <h1>The Index</h1>
        <ul>
            <li>
                <a ng-href="#!/test"> Temp One</a>
            </li>
        </ul>


        <div ng-view=""></div>
    </div>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular-route.js"></script>


 <script src="js/config.js"></script>
 <script src="js/controller/main.js"></script>
 <script src="js/controller/test.js"></script>


</body>
</html>
以及路由的
服务器端控制器

package com.testApp;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ServerController {

    @RequestMapping(value = "/test")
    public String getTestTemp() {
        return "static/test";
    }
}
更新: 实际上,不需要ServerController中的方法。可以这样写

package com.testApp;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
@RequestMapping(value = "/test")
public class ServerController {


}
因此,如果您在此控制器中编写任何REST方法,那么客户端和服务器端的端点都将是
/test/{端点的名称}

这是项目结构


如果添加更多模板,请确保在客户端和服务器端创建
路由
:您尚未将locationProvider配置为使用HML5模式。所以你的链接没有指向你的角度测试路线。它尝试从服务器加载/test路径。服务器上没有为此路径配置任何内容,因此出现404错误。如果您打算避免HTML5模式,那么链接应该是
。阅读我添加了“$routeProvider.html5Mode(true);”。但是,如果我添加@RequestMapping(“/test”)并在Java控制器中返回测试模板,这不会破坏使用ng view的目的吗?这将使它成为一个多页面应用程序。我在哪里说过服务器应该为/test返回测试模板?不应该。打开html5模式后,链接应该可以正常工作。但是,如果在/test视图上刷新页面,则不起作用,因为这将再次向/test发出请求。服务器应该为/test和应用程序的所有其他URL提供index.html页面。我想这就是你没有为服务器上的路径配置任何内容的意思。在将路由提供程序设置为html5模式后,我仍然收到模板未找到错误(我没有做任何其他更改)。这是我的控制台日志:。当我点击我的链接时,最后3行会显示出来。如果你在测试页面上重新加载,页面是否仍能正确显示?是的,确实如此:你不必做任何其他事情来解决这个问题。只需测试你的代码,就可以了。非常感谢你!
'use strict'

angular.module('TestApp' , ["ngRoute"])
       .config(function($routeProvider){

            $routeProvider
            .when('/' , {
                templateUrl : "view/main.html",
                controller : 'MainController',
                controllerAs : 'main'
            })
            .when('/test' , {
                templateUrl : "view/test.html",
                controller : 'TestController',
                controllerAs : 'test'
            })
            .otherwise({
                    redirectTo: '/'
            });
       });
package com.testApp;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ServerController {

    @RequestMapping(value = "/test")
    public String getTestTemp() {
        return "static/test";
    }
}
package com.testApp;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
@RequestMapping(value = "/test")
public class ServerController {


}