Аргумент 'ContactsCtrl' не является функцией, получил undefined

У меня проблема в маршрутизации и контроллерах AngularJS. Вот код:

Index.html


index.js

var myApp = angular.module('contacts', []);
myApp.config(function ($routeProvider) {
 $routeProvider
 .when('/', { controller: 'ContactsCtrl', templateUrl: '/views/show-contacts.html' })
 //.when('/view2', { controller: 'MyCont', templateUrl: 'V2.htm' })
 .otherwise({ redirectTo: '/' });
});

contacts.js

var myApp = angular.module('contacts', []);
myApp.controller('ContactsCtrl', function ($scope) {
 $scope.name = "omar";
});

но я получаю эту ошибку:

Аргумент 'ContactsCtrl' не является функцией, получил undefined

Любая помощь?

3 ответа

Вы переопределяете свое приложение в index.js, поэтому контроллер, созданный в contacts.js, будет потерян. Удалите эту строку из index.js:

var myApp = angular.module('contacts', []);


Измените свой index.html следующим образом:

И в вашем contact.js измените

var myApp = angular.module('contacts', []); до

var myApp = angular.module('contacts');

Angular модуль с двумя аргументами, такими как angular.module('contacts', []);, создаст новый модуль, но модуль angular с единственным аргументом, например angular.module('contacts');, подберет существующий модуль. Здесь в этом случае 'contacts'


Я бы предложил создать два разных имени модуля один в index.js(Это будет имя приложения, которое вы бы указали в атрибуте html ng-app), а другое в contacts.js(Имя модуля для контроллеров). В index.js создайте dependecy для контакта. Js`. Я смог решить проблему, выполнив ниже.

Обновлено contacts.js Здесь я обновил контакты до контактовController

var myApp = angular.module('contactsController', []);
myApp.controller('ContactsCtrl', function ($scope) {
$scope.name = "omar";
});

Обновлен index.js Здесь я добавил ContactController в качестве зависимости. Мне было проще назвать это как app.js. Таким образом, ng-app всегда отображается на имя модуля в app.js.

var myApp = angular.module('contacts', [contactsController]);
 myApp.config(function ($routeProvider) {
 $routeProvider
 .when('/', { controller: 'ContactsCtrl', templateUrl: '/views/show-contacts.html' })
 //.when('/view2', { controller: 'MyCont', templateUrl: 'V2.htm' })
 .otherwise({ redirectTo: '/' });
 });

licensed under cc by-sa 3.0 with attribution.