Angular, Pourquoi faire compliqué?
Ce matin en voulant continuer mon âpĂ©riple Angularâ, et en repensant au commentaire fait par Eric Taix dans le post prĂ©cĂ©dent http://k33g.github.io/2014/05/20/ANGULAR-04.html, je me suis aperçu que mon code nâĂ©tait pas forcĂ©ment Ă©lĂ©gant et que lâon pouvait faire plus simple et plus propre (câest mon avis, câest discutable et jâaccepte dâen discuter).
Une factory Ă la place de mon service
Nous allons remplacer notre BooksServices
par une factory que nous appellerons Book
. Donc supprimer complĂštement le code de BooksServices
et remplacez le par:
booksApp.factory("Book", function($resource) {
return $resource("/books/:id", {id: '@id'},{
update: { method: 'PUT' , params: {id: '@id'}, isArray: false }
});
})
DĂ©jĂ câest beaucoup plus court ;)
Modification de nĂŽtre contrĂŽleur
Du coup il va y avoir un peu plus de code dans le contrÎleur, mais à peine, et on évite mon mécanisme de callback précédent:
Notez bien le passage de paramĂštres avec Book
Ă la place de BooksServices
.
var MainCtrl = booksApp.controller("MainCtrl", function($scope, Models, Book) {
$scope.books = null;
$scope.levels = Models.levels();
$scope.getAllBooks = function() {
Book.query().$promise.then(
function(data) {
$scope.books = data;
},
function(error) {
console.log("getAllBooks", error);
}
)
}
$scope.createBook = function(book) {
Book.save(book).$promise.then(
function(data) {
$scope.getAllBooks();
},
function(error) {
console.log("createBook", error);
}
)
}
$scope.updateBook = function(book) {
Book.update({id: book._id}, book).$promise.then(
function(data) {
$scope.getAllBooks();
},
function(error) {
console.log("updateBook", error);
}
)
}
$scope.getBook = function(id) {
Book.get({id:id}).$promise.then(
function(data) {
console.log(data);
$scope.book = data;
},
function(error) {
console.log("getBook", error);
}
)
}
$scope.deleteBook = function(id) {
Book.delete({id: id}).$promise.then(
function(data) {
$scope.getAllBooks();
},
function(error) {
console.log("book delete ERROR", error);
}
)
}
$scope.getAllBooks()
});
VoilĂ , câest tout pour aujourdâhui, mais ça me semblait important Ă prĂ©ciser. Demain, finalement un peu de cosmĂ©tique, promis (sauf si je trouve dâautres axes de refactoring avant).
Tweet