Mit AngularJS mit Scala Play, I'm diesen Fehler erhalten.
Fehler: Argument 'MainCtrl' ist keine Funktion, wurde undefiniert
Ich versuche, eine Tabelle zu erstellen, die aus den Tagen der Woche besteht.
Bitte werfen Sie einen Blick auf meinen Code. Ich hatte den Namen des Controllers überprüft, aber der scheint korrekt zu sein. Hinweis: Der Code stammt aus dieser SO Antwort
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"]
}
});
}());
Entfernen Sie das []
aus dem Namen ([myApp]) des Moduls
angular.module('myApp', [])
Und fügen Sie ng-app="myApp"
in die html-Datei ein und es sollte funktionieren.
ERST. Prüfen Sie, ob Sie in den Routendefinitionen den richtigen "Controller" haben, der mit den Namen der Controller übereinstimmt, die Sie definieren.
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';
}]);
andere Controllernamen in diesem Beispiel werden zu Fehlern führen, aber dieses Beispiel ist korrekt
SECOND Überprüfen Sie, ob Sie Ihre Javascript-Datei importiert haben:
<script src="modules/community/controllers/CommunityMembersCtrl.js">/script>
Ich hatte die gleiche Fehlermeldung (in meinem Fall: "Argument 'languageSelectorCtrl' ist keine Funktion, wurde undefiniert").
Nach einigen mühsamen Vergleich mit Angular seed's Code, fand ich heraus, dass ich zuvor einen Verweis auf die Controller-Modul in app.js entfernt hatte. (zu finden unter https://github.com/angular/angular-seed/blob/master/app/js/app.js)
Also hatte ich dies:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])
Dies ist fehlgeschlagen.
Und als ich den fehlenden Verweis hinzugefügt habe:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])
Die Fehlermeldung verschwand und Angular konnte die Controller wieder instanziieren.