AngularJS: die Fabrik ist immer undefiniert, wenn Sie injiziert in controller
Ich versuche ein einfaches Beispiel einer Adressbuch-Winkel-Anwendung. Ich habe eine Fabrik, die gibt ein array von Datensätzen und es wird angezeigt in einer Liste Ansicht mit einer Liste-controller
angular.module('abModule', ['ngRoute'])
.factory('AddressBook', function() {
var address_book = [
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"age": 29
},
{
"id": 2,
"first_name": "Anna",
"last_name": " Smith",
"age": 24
},
{
"id": 3,
"first_name": "Peter",
"last_name": " Jones",
"age": 39
}
];
alert('inside factory function');
return {
get: function() {
return address_book
}
};
})
.config(function($routeProvider) {
$routeProvider
.when('/', {
controller:'list_controller',
templateUrl:'list.html'
})
.when('/add', {
controller:'add_controller',
templateUrl:'add.html'
})
.otherwise({
redirectTo:'/'
});
})
.controller('list_controller',['$scope', function ($scope, AddressBook) {
$scope.address_book = AddressBook;
}])
.controller('add_controller',['$scope', function ($scope,AddressBook) {
//$scope.entry = {};
$scope.save = function() {
AddressBook.set(
{
"id": $scope.address_book.length +1,
"first_name":$scope.entry.firt_name,
"last_name":$scope.entry.last_name,
"age":$scope.entry.age
}
);
};
}]);
Hier 'AddressBook' ist immer undefined inside 'list_controller'. Keine Ahnung, wo ich bin mache ich falsch? Jede Hilfe wird sehr geschätzt.
- Ihr Adressbuch dont haben set-Funktion
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie nicht kommentieren
AddressBook
für Ihre DIwerden sollte:
Gleiche für die anderen controller.
Ein weiterer Ansatz ist die Verwendung von $injizieren Deklaration der Abhängigkeiten , die verwendet werden, in der gleichen Reihenfolge wie die Argumente, um Ihre functionas unten zeigen . Es hilft bei der Injektion der richtigen Leistungen, die nach der Verkleinerung des Codes.
Hinweis: Dienste, die Namen werden umbenannt nach der minifizierung und können sich mit brechen Ihre Anwendung
PostsController.$inject = [ 'postsService', logger ];
wo 'logger' wurde nicht definiert. Stellt sich heraus ohne die Anführungszeichen werfen auch die ReferenceError.Eine weitere mögliche Ursache für immer undefined in einer Fabrik variable ist die falsche Zuordnung der gemeldeten Abhängigkeiten, um die Liste der Parameter der Funktion. E. g.:
Leider, Winkel-keine Vorwarnung oder Fehlermeldung, und es kann sehr frustrierend sein, vor allem, wenn der dependency-Liste ist groß.