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.
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.