Я пытаюсь заставить ui.router работать со следующей настройкой.
export class Router {
/* tslint:disable no-unused-variable */
private static $inject: string[] = ["$stateProvider", "$urlRouterProvider", "$locationProvider"];
/* tslint:enable no-unused-variable */
constructor($state: ng.ui.IStateProvider, $urlRouter: ng.ui.IUrlRouterProvider, $location: ng.ILocationProvider) {
$urlRouter.otherwise("/");
$state.state("default", {
url: "/",
views: {
"header": {
templateUrl: "/views/layout/header.html"
},
"sidebar": {
templateUrl: "/views/layout/side-menu.html"
},
"": {
templateUrl: "/views/workspace/index.html"
},
"footer": {
},
}
});
$location.html5Mode(true);
}
}
Вот частичный файл, который я использую.
<div id="workspace">
<div id="workspace-header">
<div data-ui-view="header"></div>
</div>
<div id="workspace-container">
<div>
<div data-ui-view="sidebar"></div>
</div>
<div>
<div>
<div>
<div id="workspace-view">
<div data-ui-view></div>
</div>
<div id="workspace-footer">
<div data-ui-view="footer"></div>
</div>
</div>
</div>
</div>
</div>
</div>
Я не уверен, что это связано (или является ли это проблемой), но приведенный выше html вставляется с помощью ng-include вот так.
<div id="dashboard" data-ng-include="'/views/master.html'" data-prevent-touch-scroll></div>
Просто чтобы быть ясным, я проверил, что маршрутизатор вызывается.
Я думал, что «иначе» перейдет к URL-адресу, и он перейдет в состояние по умолчанию, которое будет вводить частичные представления, но, похоже, это не работает, я уверен, что что-то упускаю, но я не могу понять это.