2015-02-02 3 views
0

У меня есть такая функция, которая должна загружать некоторые маршруты.Как найти все загруженные маршруты?

.config(function($stateProvider, $urlRouterProvider){ 

    $stateProvider.state('app', { 
     abstract: true, 
     templateUrl: "index.html", 
    }) 

    $stateProvider.state('index', { 
    url: '/', 
    views: { "index" : { templateUrl: "index.html" } }, 
    parent: "app", 
    }); 

    $stateProvider.state('register', { 
    url: "/register", 
    views: { "register" : { templateUrl: "templates/register.html", } }, 
    parent: "app", 
    }); 


    $urlRouterProvider.otherwise("/"); 
}) 

Но я получаю

Error: Could not resolve 'register' from state ''

исключение. Из всех других примеров, которые я проверил, эта конфигурация маршрута выглядит нормально. Но это не работает по какой-то причине.

Я подозреваю, что мои маршруты не загружены, я поставил console.log, debugger и alert функции внутри моей .config функции, но ни один из них не выполняются.

Есть ли способ перечислить все загруженные маршруты с ui-router?

+0

делает файл .js, который содержит.config() загрузится? Вы включили его в свой index.html (или какой-либо файл HTML загружает все ваши скрипты)? – pbkhrv

+0

@pbkhrv yes, этот файл js загружается без проблем. – Sefa

ответ

0

Disclaimer: I would like to give you a hint. If this answer would not suite, let me know, will delete that. Because obviously, my previous answser is not working for you: Could not resolve '...' from state ''

В чем может быть причина сообщения об ошибке?

Could not resolve 'register' from state ''

Существует только два варианта.

  • Файл с определением состояния не загружен. (Может быть проверена с некоторыми console.log вещи)
  • Файл представляет module, который правильно загружен, но не ссылается корень ng-app="myApp"

Я бы сильно ожидать, что второй случай является проблемой. Вот BROKEN example, который (после нажатия кнопки) покажет ошибку: Could not resolve 'register' from state ''

Что произошло. Существует файл с именем «otherStates.js», который загружается в index.html

... // см скрипты, загруженные выше // ниже это имя корневого модуля " MYAPP» ...

The "otherStates.js" объявляет модуль "myStates", который содержит все состояния:

// will always be in a console 
// because file is loaded 
console.log("file is accessed"); 

angular 
.module('myStates', ['ionic']) 
.config(function($stateProvider, $urlRouterProvider){ 

    // never reach console, because this module is not used 
    console.log("module myStates is not referenced in myApp "); 
    console.log("these lines will never be trigerred"); 

    $stateProvider 

    .state('app', { 
     abstract: true, 
     ... 
    }) 
    .... 

So Почему мы получаем эту ошибку? Как это исправить?

Просто в script.js, (где наш корневой модуль) мы имеем это заявление:

var app = angular.module('myApp', ['ionic']) 

И этого недостаточно. Нам также необходимо обратиться к myStates. Таким образом, мы должны изменить это так, и все будет работать

var app = angular.module('myApp', ['ionic', 'myStates']) 

Проверить это broken example

Смежные вопросы