web-dev-qa-db-fra.com

L'argument angularjs n'est pas une fonction a une chaîne

Je suis un débutant pour angularjs. Je construis une application où ma page d'accueil aura une liste de messages. J'ai pensé à utiliser Angularjs pour une liaison à deux voies pour cette page seule. J'ai commencé avec une page d'échantillonnage mais j'ai rencontré des problèmes ici même.

Ma page d'échantillonnage. J'utilise NG-APP pour ce div seul car je ne veux pas que Angularjs interagit avec d'autres aspects de la page.

<div ng-app="posts">
  <ul class="post_list" ng-controller="PostController">
    <li ng-repeat="post in posts">
    {{post.title}}
    {{post.description}}
    </li>
  </ul>
</div>

j'ai un fichier app.js qui a

var app = angular.module('posts', []);

et un fichier postcontroller.js avec

(function(angular, app) {
  // Define the Controller as the constructor function.
  console.log(app);
  console.log(angular);
  app.controller("PostController",["$scope"], function($scope) {
    $scope.posts = [
      {"title":"asdf", "description":"describe"},
      {"title":"second one", "description":"second describe"},
    ];
  });
})(angular, app);

Quand je charge ma page d'accueil. Je reçois

ERREUR: argument "PostController" n'est pas une fonction. a obtenu string [path googlecdn] angular.min.js: 16

Qu'est-ce que j'oublie ici. S'il vous plaît aidez-moi comme je suis totalement confus. Je suis nouveau à Angularjs et aussi à JavaScript.

22
Anirudhan J

Le problème est dans la façon dont vous déclarez votre contrôleur. Vous devriez le faire comme indiqué ci-dessous:

app.controller("PostController",["$scope", function($scope) {
    $scope.posts = [
      {"title":"asdf", "description":"describe"},
      {"title":"second one", "description":"second describe"},
    ];
  }]);

Veuillez noter que le deuxième argument est un tableau avec un $scope String et une fonction d'éléments de tableau. Ceci est une syntaxe appropriée à utiliser pour écrire du code de sécurité de la mine.

48