Question

Je suis nouveau à moootools et je suis en train de créer une classe modèle, ceci est mon code -

var Template = new Class({
  Singleton : true,
  template : '',

  /* gets the component type template */
  get : function(componentType){
    var tplUrl = Core.getUrl('backend') + 'response/' + componentType + '/get_template.php',
        that = this,
        request = new Request({url: tplUrl, method : 'get',onSuccess : function(responseText){
          that.template = responseText; 
          return that;
        }}).send(); 
  }

});

Ce que je veux faire est la suivante:

var tpl = new Template();
tpl.get('component').setTemplateData({name:'yosy'});

Le problème est quand je fais appel ce code:

var tpl = new Template();
console.log( tpl.get('component') );

Je ne reçois pas mon objet courant de modèle, je reçois est « non défini ».
Comment puis-je faire ce chainable?

Était-ce utile?

La solution

Vous faites un appel asynchrone dans la fonction get. La demande peut prendre 100ms, 1s ou 10s et au moment où les finitions de la fonction get et le rendement, la demande sera toujours en attente. Au lieu de cela ce que vous devez faire est, passer une fonction de rappel à get et appel que sur le succès.

get: function(componentType, successCallback) {
    var request = new Request({
        ..,
        onSuccess: successCallback
    }).send();
}

Notez que vous n'êtes pas tout retournerez de la fonction get. Un exemple moyen d'invoquer ce serait:

tpl.get('component', function(responseText) { alert(responseText); });

Autres conseils

Votre fonction get manque une valeur de retour. Si vous voulez que les fonctions de la chaîne, vous devez retourner l'objet lui-même:

get : function(componentType){
var tplUrl = Core.getUrl('backend') + 'response/' + componentType + '/get_template.php',
    that = this,
    request = new Request({url: tplUrl, method : 'get',onSuccess : function(responseText){
      that.template = responseText; 
      return that;
    }}).send(); 

    return this;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top