我有用户 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'
}
}
});