Usando AngularJS con Scala Play, estoy recibiendo este error.
Error: Argumento 'MainCtrl' no es una función, obtuvo undefined
Estoy intentando crear una tabla con los días de la semana.
Por favor, eche un vistazo a mi código. He comprobado el nombre del Controlador, pero parece correcto. Nota: Código utilizado de este SO respuesta
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"]
}
});
}());
Eliminar el []
del nombre ([myApp]) del módulo
angular.module('myApp', [])
Y añade `ng-app="myApp"al html y debería funcionar.
**PRIMERO. compruebe si tiene el "controlador" correcto en las definiciones de ruta, igual que los nombres de los controladores que está definiendo
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 nombres de controlador en este ejemplo dará lugar a errores, pero este ejemplo es correcto
SEGUNDO comprueba si has importado tu archivo javascript:
``` <script src="modules/community/controllers/CommunityMembersCtrl.js"></script>````
Tuve el mismo mensaje de error (en mi caso : "Argumento 'languageSelectorCtrl' no es una función, obtuvo undefined").
Después de una tediosa comparación con el código de Angular seed's, descubrí que había eliminado previamente una referencia al módulo de controladores en app.js. (lo puedes ver en https://github.com/angular/angular-seed/blob/master/app/js/app.js)
Así que tenía esto:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])
Esto ha fallado.
Y cuando añadí la referencia que faltaba:
angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])
El mensaje de error desapareció y Angular pudo instanciar los controladores de nuevo.