2015-01-08 50 views
0

網址更新我,用ui.router和我有層次結構中的下一個狀態發行採用ui.router

$stateProvider 
     .state('admin', { 
      abstract: true, 
      url: '', 
      templateUrl: baseUrl + "app/views/_MainLayout.html", 
     }) 
    .state('admin.null', { 
     url: '', 
    }) 
     .state('admin.edit-customer', { 
      url: "/Account", 
      views: { 
       "edit-info": { 
        controller: "CustomerEditController", 
        templateUrl: baseUrl + "app/Views/EditCustomer.html" 
       } 
      } 
     }) 
     .state('admin.add-customer', { 
      url: "", 
      views: { 
       "edit-info": { 
        controller: "CustomerAddController", 
        templateUrl: baseUrl + "app/Views/AddCustomer.html" 
       } 
      } 
     }) 
     .state('admin.add-student', { 
      url: "", 
      views: { 
       "edit-info": { 
        controller: "StudentAddController", 
        templateUrl: baseUrl + "app/Views/AddStudent.html" 
       } 
      } 
     }) 
     .state('admin.edit-student', { 
      url: "", 
      views: { 
       "edit-info": { 
        controller: "StudentEditController", 
        templateUrl: baseUrl + "app/Views/EditStudent.html" 
       } 
      } 
     }) 
     .state('admin.teacher-tool', { 
      url: "/TeachingTool", 
      views: { 
       "edit-info": { 
        controller: "TeacherAssignmentsController", 
        templateUrl: baseUrl + "app/Views/TeacherAssignments.html" 
       } 
      } 
     }) 
     .state('order', { 
      url: "/order", 
      templateUrl: baseUrl + "app/views/OrderMain.html", 
      controller: 'OrderController' 
     }); 

    $locationProvider.html5Mode(true); 
    $urlRouterProvider.otherwise('/Account'); 
}]) 

所以,當我的帳戶和TeachingTool一切之間的切換與工作正常,網址更新爲它應該,但是當我在賬戶和訂單或TeachingTool和訂單之間切換時,只有在第二次切換到此狀態後纔會更改。

我debuged和figgured指出,URL路徑改變正常,我還以爲網址不被消化週期期間更新的,我已經試過了,在orderController

的開頭
 $timeout(function() { 
      $location.absUrl(baseUrl + $state.current.url); 
      $location.path($state.current.url); 
     }, 200); 

它確實幫助,但並不總是,有時url會在第一時間更新,但有時不會。請告訴我,如果我錯了,並幫我找到答案

+1

但是,這裏的答案非常簡單和容易 - 只是使用url定義。不要使用空的網址。所有將開始按預期工作 –

+0

我有國家與網址,但不是全部,在一些國家即時編輯只有特定的看法,我不需要更改網址,所以一些國家有空的網址。爲什麼這是一個問題? –

回答

0

在這裏,我們是。你的管理員狀態是抽象的。並沒有網址。然後,任何網址以/作爲管理員的子狀態開頭。但這不是另一個國家。

因此,無論你給管理員狀態URL如/admin,然後你將這個前置所有子狀態或命令狀態管理狀態的孩子。

+0

感謝您的回答,並對延遲迴復感到抱歉。 我沒有URL的值的問題。當我在網站的邏輯部分之間切換時,我正在指向URL具有值的狀態。工作中沒有問題,它會切換到正確的狀態,但URL不會第一次更新。 你的第一個方法沒有做任何事情。現在我只是遇到同樣的問題。第二種方法是不可能的,因爲我需要將MainLayout作爲基本模板視圖,因爲它包含了一個應該出現在兩個邏輯部分中的部分(教學工具,帳戶) –

+0

就像一條規則,爲您創建的每個抽象狀態添加URL。然後,在路由器中沒有混淆。 –