Mackaybravo
@Mackaybravo
программист, фрилансер

Почему не работает роутинг в angulaJs?

в общем надо страницу, где юзер смог бы авторизоваться site.com/login, но рендерится главная страница, вот код
var app = angular.module('mainApp', ['ngRoute']).config(function($routeProvider){
			$routeProvider.when('/login', {
				templateUrl: './login.html',
				controller: 'mainContr'
			});
		});

и сам код в html, контроллер и модуль дистрибутивы записал в теге html.
рендер
<div ng-view></div>
Что я делаю не так?
  • Вопрос задан
  • 3177 просмотров
Решения вопроса 1
dunmaksim
@dunmaksim
Технический писатель
При инициализации приложения точно импортируется ngRoute? Плагин angular-route подключен к странице? Кстати, есть ещё плагин angular-router, он нерабочий, насколько я знаю. Путь точно '/login' а не '/login/'?

На всякий случай мой пример использования ngRoute, полностью рабочий:
(function(A) {
    "use strict";
    A.module('Administrator',
        [ 'ngCookies', 'ngRoute', 'ngResource', 'ui.layout', 'ui.bootstrap',
        'ui.bootstrap.dropdown', 'ui.bootstrap.modal', 
        'ui.bootstrap.collapse', 'ui.grid', 'ui.grid.selection',
        'ui.grid.resizeColumns', 'ui.grid.autoResize',
        'ui.grid.selection', 'ui.grid.i18n', 'ui.layout',
        'ui.grid.infiniteScroll'])
    .config(function($interpolateProvider, $resourceProvider, $routeProvider) {
        //Не хочу использовать Django-тег verbose
        $interpolateProvider.startSymbol('{$');
        $interpolateProvider.endSymbol('$}');
        $resourceProvider.defaults.stripTrailingSlashes = false;//Иначе POST-запросы не работают, Django же

        $routeProvider.when('/category/', {
            templateUrl: '/administrator/template/grid/',
            controller: 'CategoryGridController'
        }).when('/tests/', {
            templateUrl: '/administrator/template/grid/',
            controller: 'TestsGridController'
        });
    })
    .run(function($http, $cookies) {
        $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
        $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
        $http.defaults.headers.common['X-CSRFToken'] = $cookies.csrftoken;
    });
}(this.angular, this.jQuery));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Serhioromano
@Serhioromano
Web Developer
1. Проверте что вы используюете ngRoute а не ui.router
2. Убедитесь что яваскрипт файл включен на страницу
3. По коду не понятно есть у вас метод контроллера mainContr или нет. Понятно что вы в HTML написали тоже но объявили вы этот кнороллер в Ангуляр или нет не известно.
4. Убедитесь что у вас есть функция run() как в примере вверху
5. Путь к файлу шаблона не надо использовать ./ так как этот путь будет использоваться через HTTP. Просто укажите относительный или полный путь от корня сайта но тогда нанчните с /.

Если вы сделаете фидл и дадите ссылку то будет на много легче помочь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы