2015-05-29 107 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