2013-09-18 6 views
1

У меня очень простое приложение, которое ничего не делает, кроме отображения двух разных видов в зависимости от выбора пользователя. Это приложение является отправной точкой для изучения того, как маршруты работают в AngularJS.Контроллеры AngularJS, вызывающие ошибки

Моя проблема в этом.

Приложение при запуске в браузере переходит к представлению индекса без проблем. Это связано с тем, что индексный указатель не ссылается на контроллер. Однако представление пользователя ссылается (требует) контроллера. Это вызывает проблему, когда исключение выбрано: «Аргумент XCtrl» не является функцией, получившей неопределенное значение.

Мой главный индекс:

<html> 
<head><title></title></head> 
<body> 
<div ng-view></div> 
</body> 
</html> 

Мой главный app.js является:

angular.module('app.controllers', []); 

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

angular.module('app', ['app.controllers']) 
.config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/', { 
      templateUrl: 'views/index.html' 
     }) 
    $routeProvider.when('/users', { 
      templateUrl: 'views/users.html', 
      controller: 'UserCtrl' 
     }). 
     otherwise({ redirectTo: '/' }); 
}]); 

Мой контроллер:

appControllers.controller('UserCtrl', ['$scope', function ($scope) { 
    $scope.users = { 
     user: {name: "Ian", age: 30 }, 
     user: {name: "Paul", age: 37 } 
    }; 
}]); 

user.html

<div ng-repeat="user in users">{{user.name}} {{ user.age }}</div> 

index.html

<h1>index</h1> 

может кто-нибудь увидеть, где я неправильно. Любая помощь будет большим

EDIT:

Здесь S трассировки стека из браузера, если это помогает любому

Ошибка: Аргумент «UserCtrl» не является функцией, был неопределенным при Error() на бб (http://www.testapp.com/js/angular/angular.min.js:17:68) на ра (http://www.testapp.com/js/angular/angular.min.js:17:176) на http://www.testapp.com/js/angular/angular.min.js:53:60 при к (http://www.testapp.com/js/angular/angular.min.js:151:401) на Object.e. $ широковещательный (http://www.testapp.com/js/angular/angular.min.js:90:517) на http://www.testapp.com/js/angular/angular.min.js:83:6в час (http://www.testapp.com/js/angular/angular.min.js:78:207) в час (http://www.testapp.com/js/angular/angular.min.js:78:207) в http://www.testapp.com/js/angular/angular.min.js:78:440

Также:

www.testapp.com является локальный сервер без внешнего доступа, только в случае, если кто-то пытается его и не может получить доступ ,

+0

2 вещи: Во-первых, как указывает Томас, снимите скобки '[]' из вызова назначения 'controller '. Во-вторых, не уверен, что это всего лишь копия/вставка, но вы назначаете модуль переменной, называемой «контроллерами», но определяющей контроллер для переменной, называемой «appControllers». Может быть, создать JSFiddle, чтобы продемонстрировать вашу проблему? – bmceldowney

+0

Да, приложение appController является копией. Я попробовал предложение, но это все еще не сработало. Я никогда не использовал jSFiddle, но, посмотрев, я не уверен, как добавить несколько файлов, необходимых для создания того же результата, который у меня есть. –

ответ

0

Удалить скобки во время задания

angular.module('app.controllers', []); 

var controllers = angular.module('app.controllers'); 

Или простые сделать только htis:

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

Если поставить скобки вы будете иметь два модуля ...

1

После увидеть Я заметил, что я не добавил UserCtrl.js в свой основной index.html. После добавления это сработало. Однако я считаю, что есть возможность динамически добавлять контроллеры, директивы, службы и фильтры. Если кто-то знает, как это сделать, это будет очень полезно.

+0

В любом случае используйте скобу на модуле juste для демонстрации или у вас есть два разных модуля –

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