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

时间:2019-02-22 10:55:39

标签: javascript angularjs html5 single-page-application

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

如何在单页应用中适当地包含角度路由?

感谢您的咨询。

1 个答案:

答案 0 :(得分:0)

好吧,再做些挖掘。

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

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

并以这种方式进行了呼叫:

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

以这种方式工作。但是由于某种原因,Login.dxview页面中的控制器称为2次。