не работает маршрут angularjs Аргумент 'CatCtrl' не является функцией, получил неопределенное значение

0

Я под файлом app.js

var app = angular.module('base', ['ngRoute']);

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when('/categories', {
            templateUrl: 'views/cat.view.html',
            controller: 'CatCtrl'
        })
    }]);

Вот файл CatCtrl.js

angular.module('base').controller('CatCtrl', ['$scope', '$http', function ($scope, $http) {
    $http.get('/categories').success(function (data) {
        $scope.categories = data;
    });
}]);

Вот cat.view.html

<div ng-controller="CatCtrl">
    <div class="row">
        <div class="categories">
              Cats View
        </div>
    </div>
</div>

Я уже добавляю ng-app="base" в файл index.html.

Я получаю следующую ошибку

Error: [ng:areq] Argument 'CatCtrl' is not a function, got undefined

Я использую angularjs 1.4.7.

Я уже рассмотрел другие ответы на stackoverflow, чтобы решить эту проблему, но никто из них не работал для меня. Как я могу устранить эту ошибку?

ОБНОВИТЬ

Вот Plunk

  • 0
    в вашем CatCtrl имя вашего контроллера было 'CategoriesCtrl', поэтому в вашем ng-контроллере это должно быть ng-controller = "CategoriesCtrl"
Теги:

4 ответа

0

Вот рабочая демонстрация

http://dojo.telerik.com/EFUJo

var app = angular.module('base', ['ngRoute']);
angular.module('base').controller('CategoriesCtrl', ['$scope', '$http', function ($scope, $http) {
$http.get('/categories').success(function (data) {
    $scope.categories = data;
});
}]);

app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
    when('/categories', {
        templateUrl: 'views/cat.view.html',
        controller: 'CategoriesCtrl'
    })
}]);

Надеюсь, это может помочь вам

  • 0
    Где вы создаете cat.view.html? Он находится в теле, что означает, что он все равно будет отображаться.
  • 0
    Пожалуйста, смотрите обновленный вопрос. Я создал планк.
Показать ещё 3 комментария
0

вам придется сделать две небольшие изменения -

  1. Во-первых, я не видел ни одного CatCtrl в вашем коде. Измените эту строку

    angular.module('kB'). controller ('CategoriesCtrl', ['$ scope', '$ http',

    в

    angular.module('kB'). контроллер ('CatCtrl', ['$ scope', '$ http',

  2. Во-вторых, поскольку контроллер определен в другом модуле (KB), чем базовый, вам нужно ввести модуль в базу, если вы хотите использовать контроллер

    var app = angular.module('base', ['ngRoute', 'kB']);

Последний момент. Поскольку вы используете alrady, указывающий CatCtrl в маршрутизации, вам не нужно использовать его снова в своем представлении.

  • 0
    Я уже исправил 1 и 2 балла. Я также удалил CatCtrl из вида, и я все еще получаю ту же ошибку.
  • 0
    Лучше создайте plunk / jsfiddle.
Показать ещё 1 комментарий
0

Из вашего плункера вы можете видеть, что ваш шаблонUrl ошибочен, это должен быть путь к вашему.html файлу.

edit: имя редактируется под вопросом ->

Имя вашего контроллера - "КатегорииCtrl". "CatCtrl" - это просто имя файла, который вы собираетесь включить в index.html

<div ng-controller="CategoriesCtrl">
    <div class="row">
        <div class="categories">
              Cats View
        </div>
    </div>
</div>


var app = angular.module('base', ['ngRoute']);

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when('/categories', {
            templateUrl: 'views/cat.view.html',
            controller: 'CategoriesCtrl'
        })
}]);
  • 0
    Я знаю, это все еще не работает. Я получаю ту же ошибку.
  • 0
    Проверьте декларацию и добавление модуля kb.
Показать ещё 4 комментария
0

Добавьте зависимость как

var app = angular.module('base', ['ngRoute', 'kB']);

Надеюсь, что это поможет вам.

  • 0
    Я добавил зависимость, но все еще не работает. Я получаю ту же ошибку.

Ещё вопросы

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