[英]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.