Usando AngularJS com Scala Play, I'estou a receber este erro.
Erro: Argumento ' MainCtrl' não é uma função, ficou indefinido
I'estou a tentar criar uma tabela que consiste nos dias da semana.
Por favor, dêem uma vista de olhos ao meu código. Eu tinha verificado o nome do Controlador, mas isso parece correcto. Nota: Código utilizado a partir desta SO resposta.
**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"]
}
});
}());
Remover o []
do nome ([myApp]) do módulo
angular.module('myApp', [])
E adicionar ng-app="myApp"
ao html e deve funcionar.
PRIMEIRO.
verifique se tem o controlador
correcto nas definições da rota, tal como os nomes do controlador que está a definir
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';
}]);
diferentes nomes de controladores neste exemplo conduzirão a erros, mas este exemplo está correcto
SECOND verifique se importou o seu ficheiro javascript:
<script src="modules/community/controllers/CommunityMembersCtrl.js"></script>
Eu tinha a mesma mensagem de erro (no meu caso : "Argument 'languageSelectorCtrl' não é uma função, ficou indefinido").
Após alguma tediosa comparação com o código da Angular seed's, descobri que tinha previamente removido uma referência ao módulo de controladores no app.js. (localize-a em https://github.com/angular/angular-seed/blob/master/app/js/app.js)
Por isso, tinha isto:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])
Isto falhou.
E quando adicionei a referência em falta:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])
A mensagem de erro desapareceu e a Angular poderia instanciar novamente os controladores.