Når jeg bruker AngularJS med Scala Play, får jeg denne feilen.
Feil: Argument 'MainCtrl' er ikke en funksjon, fikk udefinert
Jeg prøver å lage en tabell som består av ukedagene.
Vennligst ta en titt på koden min. Jeg har sjekket navnet på kontrolleren, men det ser ut til å stemme. Merk: Koden er hentet fra denne SO answer.
**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"]
}
});
}());
Fjern []
fra navnet ([myApp]) på modulen.
angular.module('myApp', [])
Og legg til ng-app="myApp"
i html-filen, så skal det fungere.
FØRST.
sjekk om du har riktig controller
i rutedefinisjonene, det samme som kontrollernavnene du definerer
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';
}]);
forskjellige kontrollernavn i dette eksemplet vil føre til feil, men dette eksemplet er korrekt.
**For det andre, sjekk om du har importert javascript-filen:
``` <script src="modules/community/controllers/CommunityMembersCtrl.js"></script>````
Jeg fikk samme feilmelding (i mitt tilfelle : "Argument 'languageSelectorCtrl' is not a function, got undefined").
Etter litt møysommelig sammenligning med Angular seed' s kode, fant jeg ut at jeg tidligere hadde fjernet en referanse til controllers-modulen i app.js. (se https://github.com/angular/angular-seed/blob/master/app/js/app.js)
Så jeg hadde dette:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])
Dette mislyktes.
Og da jeg la til den manglende referansen:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])
Feilmeldingen forsvant og Angular kunne instansiere kontrollerne igjen.