简体   繁体   English

是否可以在不重新加载状态的情况下在同一ui选项卡中加载带有附加控制器的不同模板

[英]Is it possible to load different templates with attached controllers in same ui tab without state reload

I have user angular ui-router to create nested states in my application. 我有用户angular ui-router在我的应用程序中创建嵌套状态。 used abstract states also so that states should not get reloaded. 也使用抽象状态,这样就不会重新加载状态。

I use uib-tabs for one section which is child of other states , for one tab i need to render different templates based on button click event like add , edit, view but these actions are defined as different states as different templates and controllers are used for these actions(form pages), it loads parent state templates as well as GET API calls which is not needed, want to load only tab specific templates and controllers only. 我将uib选项卡用于一个部分,该部分是其他状态的子项,对于一个选项卡,我需要基于按钮单击事件(如添加,编辑,查看)呈现不同的模板,但是由于使用了不同的模板和控制器,因此这些操作被定义为不同的状态对于这些操作(表单页面),它将加载父状态模板以及不需要的GET API调用,仅希望加载特定于选项卡的模板和控制器。 how can i achieve this or what could be best way to do this as i'm new to angular JS attaching code 我该如何实现这一目标?或者什么是最好的实现方式,因为我是角度JS附加代码的新手

// Code goes here //代码在这里

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'
            }
        }
    });

it is resolved UI-Router Reload State without a full page refresh $state.go(parentstatename, {}, {reload: "child state name"}); 无需完整页面刷新即可解决UI-Router重载状态 $ state.go(parentstatename,{},{reload:“ child state name”}); after reloading child state it doesnot reload parent put child state name in reload 重载子状态后,它不会重新加载父状态

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM