工廠是單身人士,可用於跨控制器共享數據和功能。你可以寫這樣的:
app.factory("DataService", ["$http", function($http){
var contacts = [];
return {
//sharing functions
postItem: function(url, item) {
return $http({
url: url,
method: 'POST',
data: item
});
},
putItem: function(url, item) {
return $http({
url: url,
method: 'PUT',
data: item
});
},
deleteItem: function(url, item) {
return $http({
url: url,
data: item,
method: 'DELETE'
});
},
setContacts = function(contacts) {
contacts = contacts;
},
addContacts = function(contact) {
contacts.push(contact);
},
deleteContact = function(contact) {
var idx = this.contacts.indexOf(contact);
contacts.splice(idx, 1);
}
};
}]);
然後,在你的控制器:
app.controller("ContactDetailsCtrl", ["$scope", "DataService", function($scope, DataService){
$scope.deleteContact = function() {
DataService.deleteItem('path/to/delete', { contactId: 123 }).then(function(response) {
//remove from client-side array once it's removed form db
DataService.deleteContact(contact);
}).catch(function(response){
//an error occurred
});
}
}]);