2015-01-13 135 views
0

我已將onExit回調添加到我的某個州,並且發現我的應用正在退出並重新進入我的狀態,如果我不這麼認爲。我查看了他們的文檔,但我還沒有找到任何能夠解釋導致狀態轉換的確切內容。什麼可以觸發Angular UI路由器的狀態變化?

我有這樣的事情

$stateProvider 
    .state('ParentState', { 
    abstract: true, 
    url: '/parent', 
    data: { 
     flow: 'Parent' 
    }, 
    views: { 
     'main': { 
     template: indexTpl 
     } 
    }, 
    onExit: function() { 
     console.log('onExit'); 
    } 
    }) 
    .state('ChildState', { 
    parent: 'ParentState', 
    url: '?a&b', 
    resolve: { 
     resolvedData: ['$stateParams', 'service', function($stateParams, service) { 
     service.resolveData($stateParams); 
     } 
    }, 
    views: { 
     ... 
    } 
    }; 

我注意到的行爲是,我會在/父?A =東西& B = somethingElse,然後觸發一些地方a或b得到改變不同值,這會導致解析再次運行。我不希望'ParentState'退出,因爲變量在子狀態中發生變化,但是正在調用onExit。

我想知道什麼情況下可以觸發狀態更改,以便我可以使用onExit回調,並確切知道它何時會被調用。

+1

父onExit回調被調用的原因也是因爲在調用state.go我傳入了{reload:true},所以我認爲這導致子狀態和父狀態都退出並重新輸入 – user1809913

回答

3

根據the docs

甲狀態對應於應用程序中的一個「地點」在 整體UI和導航方面。狀態描述(通過控制器/ 模板/ 視圖屬性)界面看起來像什麼和在那個 位置。

因此,如果視圖屬性更改,狀態從ChildState更改爲另一個ChildState。然後,由於ChildState繼承ParentState,onExit已解決第一個ChildState

相關問題