Dies ist eine Frage, die ich nicht gewohnt bin zu fragen, aber ich fühle mich wie dies der einzige Weg ist, zu verstehen, womit ich kämpfe. Wie unten gezeigt, gibt es zwei Funktionen app.controller()
und app.factory()
, für mich scheinen beide gleich zu sein, obwohl wenn ich einen Teil lösche, die Funktion nicht ihre beabsichtigte Aufgabe erfüllt.Verstehen Sie nicht die Controller in Angular JS
Link zu Plunker: click here (Relevante Datei ist script.js)
Was ist der Unterschied zwischen diesen beiden Funktionen, warum kann habe ich nur einer von ihnen? Ich weiß, dass es eine einfache Erklärung geben muss.
app.controller('MainCtrl', ['$scope', 'ItemsService', function ($scope, ItemsService) {
$scope.newItem = { PlateNumber: '', Description: '', Price: 0 };
$scope.currentItem = null;
$scope.items = ItemsService.getItems();
$scope.addItem = function() {
ItemsService.addItem(angular.copy($scope.newItem));
$scope.newItem = { PlateNumber: '', Description: '', Price: 0 };
};
$scope.updateItem = function (id) {
ItemsService.updateItem(id);
};
$scope.removeItem = function (id) {
ItemsService.removeItem(id);
};
}]);
vs
app.factory('ItemsService', ['$firebase', 'FIREBASE_URI', function ($firebase, FIREBASE_URI) {
var ref = new Firebase(FIREBASE_URI);
var items = $firebase(ref);
var getItems = function() {
return items;
};
var addItem = function (item) {
items.$add(item);
};
var updateItem = function (id) {
items.$save(id);
};
var removeItem = function (id) {
items.$remove(id);
};
return {
getItems: getItems,
addItem: addItem,
updateItem: updateItem,
removeItem: removeItem
}
}]);
Während die beiden ähnlich scheinen sie nicht sind, haben sie versucht, die Winkel docs lesen? Sie müssen einen Controller haben, Sie brauchen keine Fabrik ... https://docs.angularjs.org/guide/providers mehr Links: http://stackoverflow.com/questions/14324451/angular-service-vs- angular-factory andere: http://jsfiddle.net/k3phygpz/ – JordanHendrix
Dienste sind Singletons, Controller sind nicht. Das ist ein Anfang. – Rob
Verwenden Sie die, die Ihnen am besten gefällt (in diesem Fall) – TGrif