AngularJS - перенаправление из динамически генерируемого меню - PullRequest
0 голосов
/ 22 февраля 2019

У меня проблема с перенаправлением на другие страницы внутри моего приложения.У меня есть динамически сгенерированное меню (используя 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>

А вот мой индекс.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 голосов
/ 22 февраля 2019

Ну, сделал еще несколько копаний.

Я использовал $ location в качестве г-на.MS_AU прокомментировал.Затем добавьте это в мою конфигурацию:

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

и сделайте вызов следующим образом:

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

Таким образом, это работает.Но по какой-то причине контроллер на странице Login.dxview называется 2 раза.

...