Pregunta

Soy nuevo en moootools y estoy creando una clase de plantilla, esto es mi código -

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(); 
  }

});

Lo que quiero hacer es lo siguiente:

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

El problema es cuando estoy llamando este código:

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

No estoy recibiendo mi objeto plantilla actual, que estoy recibiendo es 'indefinido'.
¿Cómo puedo hacer que esta conexión en cadena?

¿Fue útil?

Solución

Usted está haciendo una llamada asincrónica dentro de la función get. La solicitud puede tomar 100ms, 1s o 10s y en el momento en que termine la función get y devoluciones, la solicitud se seguirá pendiente. En su lugar lo que hay que hacer es, pasar una función de devolución de llamada a get y llamada que en caso de éxito.

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

Tenga en cuenta que usted no está devolviendo algo de la función get. Un ejemplo forma de invocar esto sería:

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

Otros consejos

Su función get falta un valor de retorno. Si quieres funciones a la cadena que debe devolver el objeto en sí mismo:

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top