2014-09-25 55 views
0

是否有可能讓UI-Router在初始頁面加載時忽略頁面狀態,並且只在後續狀態更改中使用?UI-Router可以忽略初始狀態嗎?

基本上,當用戶第一次導航到http://example.com/foo時,我將在服務器上構建整個頁面。然後,當用戶導航到/bar或稍後返回到/foo時,我希望Angular處理狀態更改並將頁​​面內容注入到視圖中。

現在,UI-Router將頁面加載解釋爲狀態更改並替換已經呈現的內容,導致閃爍和浪費帶寬。有沒有辦法來防止這種情況?

回答

1

盡我所能,你可以這樣做。請注意,它只是掛接到$rootScope事件發射器,並響應來自內置的$locationProvider的事件,因此您的主模塊實際上不需要指定任何額外的依賴關係(例如ui.router)。

angular.module('myApp',[]) 
.run(['$rootScope', function ($rootScope) { 
    var initialStateChangeCaptured = false; 

    $rootScope.$on('$locationChangeStart', function (evt) { 
     if (initialStateChangeCaptured === false) { 
      evt.preventDefault(); 
      initialStateChangeCaptured = true; 
     } 
    }); 
}]) 

如果,例如,你想某些頁面實際到初始狀態變化做出反應,你可以通過看evt或包括$stateProvider並通過它尋找添加一些狀態檢查。但是這很好地處理我的情況。

如果有人能指出這個方法中缺少的東西,我會非常高興。