AngularJS erreur: fnPtr n'est pas une fonction
Je suis en train d'écrire un échantillon AngularJS, et spring mvc projet. Le printemps des méthodes fonctionne très bien, mais j'ai un problème avec declaraton de la fonction dans mon contrôleur de site. Mon application doit renvoyer un mot de la saisie de texte, mais quand je clique sur le bouton, j'ai cette erreur:
[13:23:58.900] "Error: fnPtr is not a function
parser/_functionCall/<@http://localhost:8080/example/resources/js/Angular/angular.js:6542
ngEventDirectives[directiveName]</</</<@http://localhost:8080/example/resources/js/Angular/angular.js:13256
Scope.prototype.$eval@http://localhost:8080/example/resources/js/Angular/angular.js:8218
Scope.prototype.$apply@http://localhost:8080/example/resources/js/Angular/angular.js:8298
ngEventDirectives[directiveName]</</<@http://localhost:8080/example/resources/js/Angular/angular.js:13255
createEventHandler/eventHandler/<@http://localhost:8080/example/resources/js/Angular/angular.js:2095
forEach@http://localhost:8080/example/resources/js/Angular/angular.js:130
createEventHandler/eventHandler@http://localhost:8080/example/resources/js/Angular/angular.js:2094
"
C'est mon index.html:
<!DOCTYPE html>
<html lang="en" ng-app="Apken">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="resources/js/Angular/angular.js"></script>
<script src="resources/js/controler.js"></script>
</head>
<body ng-controller="theNamer">
<div class="input-append">
<input style="width:358px;" class="span2" type="text" ng-model="myName" required min="1" />
<button class="btn btn-primary" ng-disabled="!myName" ng-click="send()">Click!</button>
</div>
<ul>
<li ng-repeat="name in names">{{name}}</li>
</ul>
</body>
</html>
Et controler.js:
function theNamer ($scope,$http){
$scope.myName='aa';
$scope.fetchList=new function()
{
$http.get('ca/list.json').success(function(thList){
$scope.names = thList;
});
}
$scope.send=new function()
{
$http.post('ca/set/3').success(function(){
$scope.fetchList;
});
}
$scope.fetchList;
}
var Apken = angular.module('Apken',[]);
Apken.controller('theNamer', theNamer);
J'ai remarqué, que doit être un certain genre de problème avec la déclaration de la fonction dans le ng-cliquez sur la valeur. Sur le site de démarrage controler.js fonctionne très bien, mais il se bloque, quand je clique sur le bouton.
Vous devez vous connecter pour publier un commentaire.
J'ai testé votre code. En utilisant AngularJS 1.0.7, l'erreur disparaît lorsque vous remplacez
avec
et la même chose s'applique à
fetchList
.Je suppose que vous avez mélangé les deux syntaxes
function(*args*) { *body* }
etnew Function(*args*, *body*)
. Vérifier sur MDN: La fonction.Vous avez également de modifier votre code pour obtenir votre
fetchList
correctement appelé:$scope.fetchList = new function()
il ne fonctionne que, quand j'ai actualiser le navigateur.()
quand vous l'appelez, comme ceci:$scope.fetchList();
. Je vais mettre à jour la réponse avec le bon code.Voulais juste ajouter pour personne à recevoir cette erreur, il peut aussi être vu si vous, comme moi, font le n00b erreur de créer une variable avec le même nom que la fonction (la fonction qui est appelée à partir de ng-cliquez sur:
ng-repeat="f in foo()"
au lieu deng-repeat="f in foo"
.