С помощью AngularJS с помощью Scala играть, я'м получаю эту ошибку.
ошибка: аргумент 'MainCtrl' это не функция, получил undefined, в
Я'м пытаюсь создать таблицу, состоящую из дней недели.
Пожалуйста, взгляните на мой код. Я проверил имя контроллера, но это кажется правильным. Примечание: использовал код из этого так ответить
index.scala.html
@(message: String)
@main("inTime") {
<!doctype html>
<html lang="en" ng-app>
<head>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
</head>
<div ng-controller="MainCtrl">
<table border="1">
<tbody ng-repeat='(what,items) in data'>
<tr ng-repeat='item in items'>
<td ngm-if="$first" rowspan="{{items.length}}">{{what}}</td>
<td>{{item}}</td>
</tr>
</tbody>
</table>
</div>
</html>
}
MainCtrl.js
(function() {
angular.module('[myApp]', []).controller('MainCtrl', function($scope) {
$scope.data = {
Colors: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
}
});
}());
Удалить []
от имени ([приложение]) модуля
angular.module('myApp', [])
И добавить НГ-приложение=то"приложение"
в HTML-код и он должен работать.
Первый.
проверьте, если у вас есть правильный контроллер
в определении маршрута, так же как и имена контроллера, который вы определяете
communityMod.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/members', {
templateUrl: 'modules/community/views/members.html',
controller: 'CommunityMembersCtrl'
}).
otherwise({
redirectTo: '/members'
});
}]);
communityMod.controller('CommunityMembersCtrl', ['$scope',
function ($scope) {
$scope.name = 'Hello community';
}]);
разные имена контроллера в данном примере приведет к ошибкам, но этот пример является правильным
Второй проверьте, если вы импортировали файл JavaScript:
в
<скрипт СРЦ=с" - модули/контроллеры сообщества//CommunityMembersCtrl.Яш" и></скрипт>``
У меня было такое же сообщение об ошибке (в моем случае : на "аргумент 'languageSelectorCtrl' это не функция, получил undefined, в то").
После несколько утомительных сравнению с углового семян's код, я обнаружил, что я уже удалил ссылку на модуль контроллеров в app.js. (пятно на https://github.com/angular/angular-seed/blob/master/app/js/app.js)
Так что у меня было это:
в <код>угловые.модуль('приложение', ['приложение myapp.фильтры', 'приложение.сервисы', 'приложение.директивы'])</код>
Этого не удалось.
И когда я добавил недостающую ссылку:
в <код>угловые.модуль('приложение', ['приложение myapp.фильтры', 'приложение.сервисы', 'приложение.контроллеры', 'приложение.директивы']) </код>
Сообщение об ошибке исчезло и углового вновь может instanciate контроллеров.
Несколько раз эта ошибка является результатом двух НГ-приложение директивы`, которые указаны в HTML. В моем случае по ошибке я указала в `тело` тег такой
НГ-приложение` в HTML-тег
и НГ-приложение=и"приложение" и
:
<html ng-app>
<body ng-app="myApp"></body>
</html>
Это серьезно занял у меня 4 часа (включая бесконечные поиски на так), но, наконец, я нашел его: по ошибке (непреднамеренно) я где-то добавляется пробел.
Можете ли вы найти его?
угловые.модуль('bwshopper.регистрации').контроллер('SignupCtrl ', SignupCtrl);
Так что ... через 4 часа я увидел, что она должна быть:
угловые.модуль('bwshopper.регистрации').контроллер('SignupCtrl', SignupCtrl);
Практически невозможно увидеть просто невооруженным глазом.
Это подчеркивает жизненно важное значение контроля версий (Git или любой другой) и блок/регрессионное тестирование.
Я столкнулся с той же проблемой и в моем случае это происходит в результате этой проблемы:
Я имел контроллеры определенными в отдельном модуле (так называемый 'приложение.контроллеры') и вводят в главный модуль приложения (так называемые 'приложение') как это:
angular.module('myApp', ['myApp.controllers'])
Коллега толкнул другого модуля контроллера в отдельном файле, но с точно таким же именем, как и мое (т. е. 'приложение.контроллеры' ), который вызвал эту ошибку. Я думаю, потому что угловые запутался между этими модулями контроллера. Однако сообщение об ошибке не очень полезно выяснить, что происходит.
В моем случае (имея обзор страницы и на "Добавить" и страница) я получил это с моей установки маршрутизации, как показано ниже. Он давал сообщение для AddCtrl, что не может быть введен...
$routeProvider.
when('/', {
redirectTo: '/overview'
}).
when('/overview', {
templateUrl: 'partials/overview.html',
controller: 'OverviewCtrl'
}).
when('/add', {
templateUrl: 'partials/add.html',
controller: 'AddCtrl'
}).
otherwise({
redirectTo: '/overview'
});
Потому что когда('/'` маршрут все маршруты ходили в обзор и контроллер не может быть подобран на /Добавить страницу маршрута перевода. Это было странно, потому что я видел этот шаблон add.html но контроллер был нигде не найти.
Удаление '/'-маршрут, когда дело исправила эту проблему для меня.
Ymed's во-вторых была моя ошибка, но просто для справки, может быть, это'ы, помогая кому-то где-то:
У меня была такая же проблема и просто прежде чем я сошел с ума я обнаружил, что я забыл включить мой скрипт контроллера.
Как мое приложение основано на ASP.Net в MVC, я решил держать меня в здравом уме, вставив следующий код в моей файл App_Start/BundleConfig.ЗС
bundles.Add(new ScriptBundle("~/app").Include(
"~/app/app.js",
"~/app/controllers/*.js",
"~/app/services/*.js" ));
и в макет.cshtml по
<head>
...
@Scripts.Render("~/app")
...
</head>
Теперь я выиграл'т должны думать о включая файлы вручную, когда-либо снова. Оглядываясь назад, я действительно должен был сделать это при создании проекта...
Если вы находитесь в субмодуль, Дон'т забудьте указать модуль в главном приложении. т. е. :
<scrip>
angular.module('mainApp', ['subModule1', 'subModule2']);
angular.module('subModule1')
.controller('MyController', ['$scope', function($scope) {
$scope.moduleName = 'subModule1';
}]);
</script>
...
<div ng-app="mainApp">
<div ng-controller="MyController">
<span ng-bind="moduleName"></span>
</div>
Если вы Don'т объявить subModule1 в mainApp, вы получили а "[НГ:areq аргумент] "в MyController" это не функция, получил неопределенный.
Я получил вменяемый ошибка с LoginController, который я использовал в основном index.html. Я нашел два варианта решения:
приложение.конфиг(['$controllerProvider', функция($controllerProvider) { $controllerProvider.allowGlobals(); }]);
перед
LoginController.$inject = ['$rootScope', '$scope', '$location'];
сейчас
app.controller('LoginController', ['$rootScope', '$scope', '$location', LoginController]);
'приложение' пришел от app.js
var MyApp = {};
var app = angular.module('MyApp ', ['app.services']);
var services = angular.module('app.services', ['ngResource', 'ngCookies', 'ngAnimate', 'ngRoute']);
У меня была такая же ошибка с большой ошибкой:
appFormid.controller('TreeEditStepControlsCtrl', [$scope, function($scope){
}]);
Вы видите ? я забыл '' вокруг первые $объем, правильный синтаксис, конечно:
appFormid.controller('TreeEditStepControlsCtrl', ['$scope', function($scope){
}]);
Первая ошибка Я не'т см. Сейчас был: " По$объем не определени", затем " поошибка: [НГ:areq] аргумент 'TreeEditStepControlsCtrl' это не функция, получил undefined, вто"
Это может быть как простой, как вшита свой актив в " " и все, что должен кавычек внутри с ' '?
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
становится
<link rel="stylesheet" media="screen" href="@routes.Assets.at('stylesheets/main.css')">
Что могло вызвать некоторые проблемы с парсингом
Чтобы устранить эту проблему, мне пришлось обнаружить, что я неправильно написал название контроллера в декларации угловых маршрутов:
.when('/todo',{
templateUrl: 'partials/todo.html',
controller: 'TodoCtrl'
})
Оказывается, это's в кэше браузера, используя хром. Просто проверить, что "отключение кэша" под проверку (элемент) решить мою проблему.
В моем случае это была простая опечатка в index.html`:
<script src="assets/javascript/controllers/questionssIndexController.js"></script>
что должны были
<script src="assets/javascript/controllers/questionsIndexController.js"></script>
без дополнительных s
в регулятор's имя.