AngularJS - 从动态生成的菜单重定向

问题描述 投票:0回答:1

我有重定向到我的应用程序内的其他页面的问题。我有动态生成的菜单(使用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错误。

如何在单页应用程序中正确包含角度路由?

谢谢你的建议。

javascript angularjs html5 single-page-application
1个回答
0
投票

好吧,做了一些挖掘。

我用$ location作为先生。 MS_AU评论道。然后将其添加到我的配置中:

    $locationProvider.html5Mode(
    {
        enabled: true,
        requireBase: false
    });

并以这种方式打电话:

        if (viewType == "Login") {
            $location.path("/login");
            rebuildMenu();
        }
        else
        {
            $location.path("/" + viewType);
        } 

这种方式有效。但由于某种原因,Login.dxview页面中的控制器被称为2次。

© www.soinside.com 2019 - 2024. All rights reserved.