0

Bonjour les gars. J'ai un petit problème de compréhension avec backbone.js. J'ai un javascript sdk à partir d'un backend en tant que service avec des méthodes getter et setter pour obtenir des données de cette plate-forme.Backbone.js/require.js - Remplacer la fonction du modèle pour travailler avec le backend en tant que service

J'ai chargé ce javascript sdk avec require.js et ça fonctionne très bien. Maintenant, j'ai besoin de créer des modèles qui fonctionnent avec ces méthodes getter et setter pour obtenir ces données à ma collection et enfin à mon avis. Je n'ai aucune idée ... peut-être que quelqu'un a la bonne idée pour moi.

Ceci est mon modèle actuel:

define(['jquery','underscore','backbone'], function($,_,Backbone) { 
    var holidayPerson = Backbone.Model.extend({ 

     initialize: function() { 

      console.log("init model holidayPerson"); 

      this.on("change", function(data) { 
       console.log("change model holidayPerson"+JSON.stringify(data)); 
      }); 

     } 
    }); 

    return holidayPerson; 
}); 

En fait, je crée une instance de mon modèle à mon avis:

define(['jquery','underscore','backbone','text!tpl/dashboard.html','holidayPerson','apio'], function($,_,Backbone,tpl, holidayperson, apio) { 

    template = _.template(tpl); 
    var usermodel = new holidayperson(); 

    var dashboardView = Backbone.View.extend({ 

     id: 'givenname', 

     initialize: function() { 
      console.log("dashboard view load"); 
      usermodel.on('change', this.render); 

      var user = new apio.User(); 
      user.setUserName('xxx'); 
      user.setPassword('xxx'); 

      apio.Datastore.configureWithCredentials(user); 

      apio.employee.getemployees("firstName like \"jon\" and lastName like \"doe\"", { 
       onOk: function (objects) { 

        console.log("apio: " + JSON.stringify(objects)); 

        usermodel.set({mail: objects[0]['data']['mail'],lastname: objects[0]['data']['lastName'], username: objects[0]['data']['userName'], superior: objects[0]['data']['superior']}); 

       } 
      }); 
     }, 

     render: function() { 
      console.log("render dashboard view"); 
      console.log(usermodel.get('mail')); 
      console.log(usermodel.get('lastname')); 
      this.$el.html(template()); 
      return this; 
     } 
    }); 

    return dashboardView; 
}); 

Je pense que ce pas la bonne façon ... puis-je remplacer la méthode getter et setter de ce modèle? Ou peut-être la fonction url? Quelqu'un maintenant quelle est la meilleure pratique?

Merci beaucoup :-)

Répondre

0

Tout d'abord, assurez-vous que votre opération est asynchrone rendre, que votre appel API sera et les userModel params ne sera pas mis en avant cette opération terminée. Si vous rendez les feux de méthode avant cela, cela affichera le nom d'utilisateur vide, puisque les données ne seront pas encore là. Deuxièmement, un modèle n'a pas besoin de chercher ses propres données, à mon avis. Si vous devez avoir plusieurs utilisateurs, vous pouvez utiliser une collection pour contenir ces utilisateurs, puis remplacer la méthode de synchronisation de la collection pour gérer la récupération des données de l'API, mais s'il n'y a pas de collection, il me semble logique d'avoir une méthode cela permet de récupérer les données et de les définir par la suite, comme vous l'avez fait.

+0

merci pour votre réponse. J'ai changé ma structure complète de projet et cela fonctionne bien. merci beaucoup l'homme. – cha0s