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).

blog comments powered by Disqus

Related posts