簡體   English   中英

Angular Ui Router在訪問url時沒有加載視圖[material-ui + tabs]

[英]Angular Ui Router not loading view when accessing url [material-ui + tabs]

我正在使用Angular + material-ui ,基本上我想用不同的步驟進行一次入門過程,所以我使用的是tabs指令,每個指令都有不同的ui-view

HTML:

<div ng-controller="TabsCtrl" class="content" ng-show="$root.loadingComplete">
    <md-tabs md-selected="$root.selectedIndex" md-border-bottom class="md-primary">
        <md-tab id="tab1" md-on-select="goTo('start')">
            <md-tab-label>Welcome</md-tab-label>
            <md-tab-template>
                <md-content>
                    <div ui-view="vStart"></div>
                </md-content>
            </md-tab-template>
        </md-tab>
        <md-tab id="tab2" md-on-select="goTo('personal')">
            <md-tab-label>Personal</md-tab-label>
            <md-tab-template>
                <md-content>
                    <div ui-view="vPersonal"></div>
                </md-content>
            </md-tab-template>
        </md-tab>

這是我的路線配置:

angular.module('onboarding').config(['$stateProvider', '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider) {
        $stateProvider
            .state('start', {
                url: '/:memberId',
                views: {
                    vStart: {
                        templateUrl: 'views/start.html',
                        controller: 'StartCtrl'
                    }
                }
            })
            .state('personal', {
                url: '/:memberId/personal',
                views: {
                    vPersonal: {
                        templateUrl: 'views/personal.html',
                        controller: 'PersonalCtrl'
                    }
                }
            })
           ...

函數goTo(status):

$scope.goTo = function(state) {
            $state.transitionTo(state, $stateParams);
        };

問題主要是如果我在url localhost:9000/#/12345打開“home”它工作正常,我看到了開始視圖,我可以切換到個人視圖

$rootScope.selectedIndex = 1;
$state.transitionTo('personal', $stateParams);

但是,如果我直接從localhost:9000/#/12345/personal打開網址localhost:9000/#/12345/personal沒有發生任何事情,視圖沒有加載,也沒有加載控制器。 我有一個console.log('start controller')和相同的console.log('personal controller')來檢查它們何時被加載。

此外瀏覽器歷史記錄不起作用,例如我轉到開始頁面locahost:9000/#/12345然后點擊按鈕轉到localhost:9000/#/12345/personal一切都很好但是如果我去了回到瀏覽器歷史記錄,url是localhost:9000/#/1245 (正確),但視圖完全為空,根本沒有加載控制器。

您的路由似乎已關閉。 UI路由器將子狀態的URL附加到其父狀態。

嘗試刪除標題/:memberId

.state('personal', {
    url: '/personal',
        views: {
            vPersonal: {
                templateUrl: 'views/personal.html',
                controller: 'PersonalCtrl'
             }
         }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM