0

我有用户 angular ui-router 在我的应用程序中创建嵌套状态。也使用了抽象状态,这样状态就不会被重新加载。

我将 uib-tabs 用于其他状态的子部分,对于一个选项卡,我需要根据按钮单击事件(如添加、编辑、查看)呈现不同的模板,但这些操作被定义为不同的状态,因为使用了不同的模板和控制器对于这些操作(表单页面),它加载父状态模板以及不需要的 GET API 调用,只想加载特定于选项卡的模板和控制器。我怎么能做到这一点或者最好的方法是什么,因为我是 Angular JS 附加代码的新手

// 代码在这里

var loginInApp = angular.module('loginInApp', []);
loginInApp.config(function($stateProvider, $urlRouterProvider, $qProvider) {

$urlRouterProvider.otherwise('login');


$stateProvider

    .state('login', {
        url: '/login',
        views: {
           /* 'header': {
                templateUrl: 'header.html'
            },*/
            'login': {
                templateUrl: 'login.html',
                controller: 'LoginController',
             },
            'footer': {
                templateUrl: 'footer.html',
                controller: 'footerController'
            }
        }
     })
      .state('homeContainer', {
         url: '/homeContainer',
         templateUrl: 'homeContent.html',
         controller: 'homeContentController',
         controllerAs: 'homeContentCtrl',
         abstract : true,
         resolve:{              
        //webAPI calls
        }
     })

    .state('homeContainer.home', {
        url: '/home',
        views: {
            'header@homeContainer': {
                templateUrl: 'header.html',
                controller: 'HeaderController',
                controllerAs: 'Header',              
            },
            'folder@homeContainer': {//moved from home.content
                templateUrl: 'folder.html',
                controller: 'FolderController',
                controllerAs: 'Folder'
            },
            'content@homeContainer': {
                templateUrl: 'docAndNoteContent.html'
            },
            'emailSection@homeContainer': {
                templateUrl: 'emailSection.html',
                controller: 'EmailController',
                controllerAs: 'Email'
            },
            'footer@homeContainer': {
                templateUrl: 'footer.html',
                controller: 'footerController'
            }
        },
        abstract : true
    })
    .state('homeContainer.home.content', {
            url: '/content',
            views: {
                'documentAndNoteSection@homeContainer.home': {
                    templateUrl: 'documentAndNoteSection.html',
                    controller: 'documentAndNoteSectionController',
                    controllerAs: 'DocumentAndNotes'
                },
                'inbox@homeContainer.home': {
                    templateUrl: 'inbox.tpl.html',
                    controller: 'inboxController',
                    controllerAs: 'inbox'
                },
                'outbox@homeContainer.home': {
                    templateUrl: 'outbox.tpl.html',
                    controller: 'outboxController',
                    controllerAs: 'outbox'
                },
                'contacts@homeContainer.home': {
                    templateUrl: 'contacts.tpl.html',
                    controller: 'ContactController',
                    controllerAs: 'Contact'
                },
                'composeMail@homeContainer.home': {
                    templateUrl: 'composeMail.tpl.html',
                    controller: 'composeMailController',
                    controllerAs: 'composeMail'
                },
                'historyLog@homeContainer.home': {
                    templateUrl: 'historyLog.tpl.html',
                    controller: 'historyLogController',
                    controllerAs: 'historyLog'
                },
                'sharedItems@homeContainer.home': {
                    templateUrl: 'sharedItems.tpl.html',
                    controller: 'sharedItemsController',
                    controllerAs: 'sharedItems'
                }
            }
            abstract : true
    })
    .state('homeContainer.home.content.baseHomeState', { 
            url: '/baseHomeState',
            views: {
                'document@homeContainer.home.content': {
                    templateUrl: 'document.html',
                    controller: 'DocumentController'
                },
                'notes@homeContainer.home.content': {
                    templateUrl: 'note.html',
                    controller: 'NoteController',
                    controllerAs: 'Note'
                }
            }
    })
    .state('homeContainer.home.content.baseHomeState.addContact', { 
        url: '/addContact',
        views: {
            'contacts@homeContainer.home': {
                templateUrl: 'addContact.html',
                controller: 'AddContactController',
                controllerAs: 'AddContact'
             }
        }
    })

    .state('homeContainer.home.content.baseHomeState.editContact', { 
        url: '/editContact',
        views: {
            'contacts@homeContainer.home': {
                templateUrl: 'editContact.html',
                controller: 'EditContactController',
                controllerAs: 'EditContact'
            }
        }
    });
4

1 回答 1

0

解决了UI-Router Reload State 没有整页刷新 $state.go(parentstatename, {}, {reload: "child state name"}); 重新加载子状态后,它不会重新加载父级将子状态名称重新加载

于 2017-07-20T09:11:17.360 回答