2014-11-04 17 views
0

我需要從格式使用URL更改現有AngularJS應用:如何將我的AngularJS路線更改爲文件?param1 = a&param2 = b格式?

example.com/thePage/#/section/1/subsection/1 

要由服務器與一個格式使部分&小節參數可讀像這樣:

example.com/thePage?section=1&subsection=1 

環境不提供類似mod_rewrite的東西,所以我需要在Angular中更改路由以使其處理&生成這些URL。我相信我可以使用$locationProvider.html5Mode(true);來做到這一點,但我不確定如何從那裏繼續。我已經試過了現有的路由更新喜歡的東西下面,但它未能返回視圖(好象路由不工作。

$stateProvider 
      .state('section', { 
       abstract: true, 
       url: '?section', 
       views: { 
        'header': { 
         template: '<h3></h3>' 
        }, 
        'main': { 
         templateUrl: constants.baseUrl + 'views/section.html', 
         controller: 'sectionCtrl', 
         resolve: { 

          section: ['sectionervice', '$stateParams', 
           function (sectionervice, $stateParams) { 
            return sectionervice.getsection($stateParams); 
       }], 
          subsection: ['sectionervice', '$stateParams', 
           function (sectionervice, $stateParams) { 
            return sectionervice.getsubsection($stateParams); 
       }] 
         } 
        } 
       } 
      }) 
      .state('section.detail.subsection', { 
       url: '&subsection=:sectionId', 
       views: { 
        'main': { 
         templateUrl: constants.baseUrl + 'views/section.detail.subsection.html', 
         controller: 'DictionaryCtrl' 
        } 
       } 
      }); 

看來$stateProvider只能與正斜槓工作(/)參數分隔符。有另一種方式來實現這一目標?

+0

從來沒有嘗試過干涉,但我喜歡思考重寫的東西ngRoute服務? – osmancode 2014-11-04 10:30:42

+0

一個有趣的問題,但你爲什麼要在生產代碼中做到這一點?通常「角狀態」不是你的服務器需要知道或應該知道的;你的應用程序應該在客戶端的給定狀態下進行自我裝配。 – yerforkferchips 2014-11-04 14:04:02

回答

0

在UI路由器網站有

也許你可以做同樣的事情,看到RouteProvider你試圖做一個簡單的例子。和StateProvider設置。

url:http://angular-ui.github.io/ui-router/sample/app/app.js

在服務器端你可以檢索url,所以你可以得到你的參數。

[編輯]

關於$locationProvider.html5Mode(true);你可以做到這一點,做路線和狀態提供商的設置也沒有在功能

相關問題