Ошибка в угловой маршрутизации

0

Не могли бы вы мне помочь? Я пытаюсь сделать страницу с помощью AngularJS. Страница была сделана, но в консоли браузера она дает мне ошибку.

app.js (основной угловой файл)

var DevApp = angular.module("DevApp", [ 'ngRoute' ])

.config(['$routeProvider',function($routeProvider) {
    $routeProvider.when('/', { templateUrl: 'tpl/index.html', controller: "MainCtrl" })
    .otherwise({
            url: '/',
            controller: "MainCtrl",
            templateUrl: "tpl/index.html"
        });
}])

.controller('MainCtrl', [
    '$scope',
    '$http',
    '$routeParams',
    '$element',
    '$timeout',
    function($scope, $http, $routeParams, $element, $timeout) {
        console.log(1);
    }
]);

tpl/index.html (temppate of MainCtrl)

<div ng-controller="MainCtrl">
    Главная страница
</div>

index.html (основной файл)

<!DOCTYPE html>
<html ng-app="DevApp">
  <head>
    <link rel="stylesheet" href="/bootstrap/dist/css/bootstrap.min.css">
    <script type="text/javascript" src="/javascripts/jquery/jquery.min.js"></script>
    <script type="text/javascript" src="/javascripts/angular/angular.min.js"></script>
    <script type="text/javascript" src="/javascripts/angular/angular-route.js"></script>
    <script type="text/javascript" src="/javascripts/angular/app.js"></script>
    <script type="text/javascript" src="/bootstrap/dist/js/bootstrap.min.js"></script>
  </head>
  <body>
    <div ng-view></div>
  </body>
</html>

Я получаю ошибку:

angular.js:12416
Error: [$injector:unpr] http://errors.angularjs.org/1.4.5/$injector/unpr?p0=%24elementProvider%20%3C-%20%24element%20%3C-%20MainCtrl
    at Error (native)
    at http://127.0.0.1:3000/javascripts/angular/angular.min.js:6:416
    at http://127.0.0.1:3000/javascripts/angular/angular.min.js:40:307
    at Object.d [as get] (http://127.0.0.1:3000/javascripts/angular/angular.min.js:38:308)
    at http://127.0.0.1:3000/javascripts/angular/angular.min.js:40:381
    at d (http://127.0.0.1:3000/javascripts/angular/angular.min.js:38:308)
    at e (http://127.0.0.1:3000/javascripts/angular/angular.min.js:39:64)
    at Object.instantiate (http://127.0.0.1:3000/javascripts/angular/angular.min.js:39:213)
    at http://127.0.0.1:3000/javascripts/angular/angular.min.js:80:257
    at link (http://127.0.0.1:3000/javascripts/angular/angular-route.js:977:26) <div ng-view="" class="ng-scope">
  • 2
    Что обозначают $element и $timeout в параметрах контроллера?
  • 0
    Я написал этот код на примерах. Теперь я удаляю $ element и $ timeot, и это работает! Но я не могу понять, почему код не работал.
Показать ещё 5 комментариев

3 ответа

1

Unknown provider: $elementProvider <- $element <- MainCtrl, что означает, что $element не может быть введен в ваш MainCtrl.

  • 0
    Вы бежите быстрее меня, чтобы ответить: D
0

Попробуй это

var DevApp = angular.module("DevApp", [ 'ngRoute' ])

DevApp.config(['$routeProvider',function($routeProvider) {
    $routeProvider.when('/', { templateUrl: 'tpl/index.html', controller: "MainCtrl" })
    .otherwise({
            url: '/',
            controller: "MainCtrl",
            templateUrl: "tpl/index.html"
        });
}])

DevApp.controller('MainCtrl', [
    '$scope',
    '$http',
    '$routeParams',
    '$element',
    '$timeout',
    function($scope, $http, $routeParams, $element, $timeout) {
        console.log(1);
    }
]);
-2

Я не тестировал ваш код, но, возможно, в объявлении маршрутизатора есть опечатка (нет параметра "url")

.config(['$routeProvider',function($routeProvider) {
    $routeProvider.
    when('/', { templateUrl: 'tpl/index.html', controller: "MainCtrl" })
    otherwise({
            redirectTo: '/'
        });
}])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню