Thursday, October 11, 2012

Backbone.js

Backone.js

Dans cet article, je vais vous présenter la librairie Backbone.js. L’API est disponible sur le site : http://backbonejs.org/
Backbone permet de mettre en place une architecture MVC en javascript, côté client. Cela va permettre d’avoir un code javascript mieux structuré.

Model

Un modèle est une représentation de vos données sous forme d’objet. Pour créer un modèle backbone, il est nécessaire d’étendre la class : Backbone.Model.extend() ;
  La déclaration d’un model « Personne » :
  1. var html5webapp = {};
  2. html5webapp.Personne = Backbone.Model.extend({
  3.  defaults: {
  4.    "Id" :"1",
  5.    "Nom" : "Toto",
  6.    "Prenom" : "Tata"
  7.  },
  8.  initialize : function Personne() {
  9.   this.bind("error", function(model, error){
  10.    console.log( error );
  11.   });
  12. }});
L’attribut defaults permet de mettre des valeurs par défaut aux propriétés de notre modèle.
Grâce à la console de développement Google Chrome, nous pouvons déclarer une variable pers comme ceci :

   Pour obtenir maintenant la valeur des propriétés :


   Il est aussi possible d’ajouter des méthodes à notre modèle, comme par exemple des accesseurs à nos propriétés :
  1. getId : function() {
  2.     return this.get('Id');
  3. },
  4. setId : function(value) {
  5.    this.set({ Id : value });
  6. },
  7. getNom : function() {
  8.     return this.get('Nom');
  9. },
  10. setNom : function(value) {
  11.     this.set({ Nom : value });
  12. },
  13. getPrenom : function() {
  14.     return this.get('Prenom');
  15. },
  16. setPrenom: function(value) {
  17.     this.set({Prenom : value });
  18. }
Utilisation des accesseurs set /get :

Afficher un modèle

   Pour afficher un modèle, on utilise ici la librairie Underscore.js comme ceci :
  1. < script type="text/template" id="personne-template">
  2. < ul data-role="listview" id="personne-field" data-inset="true">
  3. < li >Id: <%= Id %>< /li>
  4.  < li >Nom: <%= Nom %>
  5. < li >Prenom: <%= Prenom %></ li>
  6. < /ul>
  7. < /script>
La déclaration du template « Underscore » est à faire dans une balise script. Puis on y ajoute les propriétés du modèle à afficher.

View

Afin de faire l’interface entre notre modèle et de notre template, on déclare une View. Dans cette view, on lui spécifie la template à utiliser via cette instruction : 
this.template = _.template($('#personne-template').html());

  1. html5webapp.PersonneView = Backbone.View.extend({
  2.   initialize: function(){
  3.      this.template =
  4.            _.template($('#personne-template').html());
  5.          },
  6.     render: function() {
  7.     var container = this.options.viewContainer,
  8.     personneModel = this.model,
  9.     renderedContent = this.template(personneModel.toJSON());
  10.     container.html(renderedContent);
  11.      container.trigger('create');
  12.     return this;
  13.      }
  14.    });
Puis lorsque la page HTML est prête, nous allons déclarer un conteneur dans lequel on souhaite afficher le modèle. Et enfin instancie la View en lui passant le conteneur et le modèle.
  1. $(document).ready(function() {
  2.  var personneContainer = $('#Personne').find(":jqmData(role='content')"),
  3.          perosnneView;
  4.  var persModel = new html5webapp.Personne();
  5. personneView = new html5webapp.PersonneView({model : persModel,
  6.  viewContainer: personneContainer});
  7.    personneView.render();
  8. });
La fonction render() va réaliser l’interprétation du template et du modèle.

Affichage du modèle avec les propriétés par défaut.

No comments:

Post a Comment