我有重定向到我的应用程序内的其他页面的问题。我有动态生成的菜单(使用devExtreme treeView组件)。我包括angularjs和angular-route,在MainApp.config中创建路由,每次重定向调用都返回404错误。
这是我的index.html:
<body class="dx-viewport">
<div class="container" ng-app="MainContainer" ng-controller="MainController">
<div class="left-content">
<div id="simple-treeview" dx-tree-view="treeViewOptions"></div>
</div>
<div class="right-content">
<div ng-view></div>
</div>
</div>
这是我的index.js:
MainApp.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/blank.html',
controller: 'MainController'
})
.when('/login', {
templateUrl: 'views/Login.dxview',
controller: 'LoginController'
})
.when('/test', {
templateUrl: 'views/TestView.dxview',
controller: 'TestController'
}); });
MainApp.controller("MainController", function MainController($scope, $window) {
$scope.treeViewOptions = {
dataSource: treeLoginOption,
selectionMode: "single",
selectByClick: true,
displayExpr: "name",
keyExpr: "name",
onItemClick: function (e) {
var viewType = e.itemData.type;
if (viewType == "Login") {
$window.location.href = "login";
rebuildMenu();
}
else
{
//
}
}
} });
所以这里的问题是:当我点击登录菜单时,它会将我重定向到http://localhost:50073/login并返回404错误。
如何在单页应用程序中正确包含角度路由?
谢谢你的建议。
好吧,做了一些挖掘。
我用$ location作为先生。 MS_AU评论道。然后将其添加到我的配置中:
$locationProvider.html5Mode(
{
enabled: true,
requireBase: false
});
并以这种方式打电话:
if (viewType == "Login") {
$location.path("/login");
rebuildMenu();
}
else
{
$location.path("/" + viewType);
}
这种方式有效。但由于某种原因,Login.dxview页面中的控制器被称为2次。