2015-05-29 75 views
1

我是Angular JS的新手,我想知道Angular JS中的路由是如何与Spring web MVC搭配的。我的春节,控制器还要求工作,因此,如果我从我的主页,路由到登录页面,就像当 -与Angular JS的弹簧web MVC - 路由

$routeProvider.when(
     '/', { 
      templateUrl : 'home/home.html', 
      controller : 'HomeCtrl' 
     }) 
     .when(
     '/login', { 
      templateUrl : '/login/login.html', 
      controller : 'LoginCtrl' 
     }) 
     .when(
     '/register', { 
      templateUrl : '/login/signup.html', 
      controller : 'RegisterCtrl' 
     }); 

然后甚至Spring就会查找匹配的URL请求的控制器,以及将呈现按照。但问题是,整个观点应该是正确的?所以整个页面将被重新加载,不是吗?这带走了在Angular中使用路由的全部要点。我在想错误的方式吗?如果我在想什么是错的,请纠正我。

+1

春天的MVC响应需要是JSON而不是视图。你的模板将呈现这个JSON。 – Rohit

回答

3

有在你的手中两个主要的选项:

  1. 构建单个页面AngularJS应用

在这种情况下你建立一个完全成熟的AngularJS应用中从一个页面路由到另外一台完全由AngularJS处理,您正在配置$routeProvider

视图不会被定义在服务器端。您通常会将您的HTML文件作为静态内容提供。假设你把你的HTML和JS在/应用程序,你会只写在XML配置:

<mvc:resources location="/app/**" mapping="/app/**" /> 

或JavaConfig

@Configuration 
public class MyConfig extends WebMvcConfigurerAdapter { 


@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/app/**").addResourceLocations("/app/"); 
} 

一旦加载页面home.html的,在AngularJS应用程序将自举从那一刻起,您只需要加载资产或对RESTful API执行请求即可访问服务器。

这就是说你会以一种将HTML,JS等作为静态资源的方式配置Spring MVC。就这样。

  • 构建多页应用
  • 完全有可能从一个页面跳到另一个,并把它通过Spring MVC和的模板引擎渲染你的选择服务器端。不过我的感觉是你现在正在尝试AngularJS,所以我建议现在使用第一种方法。第二种方法通常用于非常大的应用程序或满足特定的场景。

    +0

    谢谢,我意识到我需要使用Spring作为一个宁静的API,它只是服务于我的内容。 – Pratik