Ich versuche, eine Funktion von meinem AngularJS-Controller mit dem folgenden Code aufzurufen:
Controller-Code
(function () {
var hello = angular.module("helloApp", []);
hello.controller("HelloCtrl", ["$http", "$scope", function($scope, $http) {
console.log("in controller");
$scope.test = function() {
console.log("in test function");
$http.get("/test").success(function(data) {
console.log("success");
})
.error(function(data) {
console.log("error");
});
};
} ]);
})();
HTML
<!DOCTYPE html>
<html ng-app="helloApp">
<head>
...
</head>
<body ng-controller="HelloCtrl">
<div class="container">
<form class="form-horizontal">
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" ng-click="test()">Search</button>
</div>
</div>
</form>
</div>
...
</body>
Wenn ich die Anwendung starte, sehe ich die Nachricht "in controller"
wie ich es erwarten würde. Wenn ich jedoch auf die Schaltfläche zum Senden klicke, sehe ich keine der anderen drei Konsolenmeldungen.
Was vermisse ich?
Antworten:
5 für die Antwort № 1Ihre Reihenfolge der Abhängigkeitsinjektion ist falsch.
hello.controller("HelloCtrl", ["$http", "$scope", function($scope, $http) {
Sollte sein
hello.controller("HelloCtrl", ["$http", "$scope", function($http, $scope) {
Die Reihenfolge der Parameter muss mit der Reihenfolge der Namen übereinstimmen.