单击时,嵌套状态执行控制器

On click, nested states execute controller

我正在为 Angular 使用 UI 路由器。我有两个使用同一个控制器的嵌套状态。当我通过 ui-sref 单击从 state1 转到 state2 时,控制器被调用并重置我的所有变量。我希望控制器只被调用一次。

.state('GN.state1', {
    url: '/createGNForm',
    templateUrl: 'app/createGNForm/createGNForm.html',
    controller: 'GNCtrl'
})
.state('GN.state2', {
    url: '/newChapter/{chapterID}',
    templateUrl: 'app/createGNForm/createNewChapter.html',
    controller: 'GNCtrl'
})

有一个抽象的父状态并嵌套所有你想在它下面使用同一个控制器的状态。

扩展 teleaziz 的回答:

    .state('GN', {
        url: '/GN',
        abstract: true, 
        template: '<div ui-view></div>',
        controller: 'GNCtrl'
    })
    .state('GN.state1', {
        url: '/createGNForm',
        templateUrl: 'app/createGNForm/createGNForm.html',
    })
    .state('GN.state2', {
        url: '/newChapter/{chapterID}',
        templateUrl: 'app/createGNForm/createNewChapter.html'
    })