$ urlRouterProvider.в противном случае не будет маршрута по умолчанию - PullRequest
0 голосов
/ 28 апреля 2018

Я застрял с этим некоторое время. Я очень плохо знаком с вложенностью представлений ui-router. Я пытаюсь выполнить маршрут по умолчанию при обращении к "/". Вот мой файл js:

angular
        .module("app")
        .config(function($stateProvider,$locationProvider,$urlRouterProvider){

            $urlRouterProvider.otherwise("dashboard");

            $stateProvider
                    .state("home",{
                        url: "/",
                        templateUrl: "views/home/home.html"
                    })

                    .state("login",{
                        url: "/login",
                        templateUrl: "views/login/login.html"
                    })

                    .state("home.dashboard",{
                        url: "/dashboard",
                        templateUrl: "views/home/dashboard.html"
                    });       
             $locationProvider.html5Mode(true);
});



Я не знаю, почему это не работает. Каждый раз, когда я пытаюсь загрузить localhost, он не собирается localhost/dashboard. Скорее, он перестает загружаться до home.html. Пожалуйста, помогите мне узнать что-то новое и показать свою ошибку.

1 Ответ

0 голосов
/ 28 апреля 2018

Пожалуйста, посмотрите этот рабочий поршень . Я отключил режим HTML5, потому что он мешает правильной работе плунжера.

Основная проблема с вашим кодом заключалась в том, что вы перенаправили на /dashboard, в этом утверждении:

$urlRouterProvider.otherwise("/dashboard");

Обратите внимание, что home.dashboard является дочерним состоянием home. Таким образом, по умолчанию URL должен предшествовать URL-адресу состояния home. Таким образом, правильное утверждение будет:

$urlRouterProvider.otherwise("/home/dashboard");

Если вам не нужен предыдущий /home, вам нужно изменить конфигурацию маршрута для состояния home.dashboard на следующее:

.state("home.dashboard", {
  url: "^/dashboard",
  templateUrl: "dashboard.html"
});

Предыдущий ^ делает URL-адрес абсолютным и освобождает его от любого URL-адреса предыдущего родительского состояния. Так что теперь оператор $urlRouterProvider.otherwise("/dashboard"); будет работать как есть.

После этого изменения код может загрузить шаблон home.html в представлении. Кроме того, у вас не было никаких директив ui-view в home.html, в которые мог бы загружаться шаблон home.dashboard. Поэтому я добавил элемент <div ui-view></div> в home.html, чтобы он работал правильно.

...