2011-04-16 11 views
6

estoy trato de hacer que una barra de progreso en la rejilla (Ext JS), y obtiene este error:función del objeto no tiene un método diferir

Object function has no method defer

¿Qué es este método "mágico"? ¿Qué hace? ¿Y por qué no se encuentra? Código:

renderer: function (value, meta, rec, row, col, store){ 
    var id = Ext.id(); 
    (function(){ 
     new Ext.ProgressBar({ 
      renderTo: id, 
      value: 0.5 
     }); 
    }).defer(25); 
    return '<span id="' + id + '"></span>'; 
} 

Respuesta

10

La función defer se utiliza para retrasar una llamada de función por X milisegundos. Pruebe con una sintaxis como esta:

Ext.Function.defer(function(){ 
    new Ext.ProgressBar({ 
     renderTo: id, 
     value: 0.5 
    }); 
}, 25); 

que deberían funcionar de acuerdo con ExtJS API documentation.

+1

Y gracias por el enlace a la documentación;) – Kein

+0

Si está usando Sencha Touch, sería 'Ext.defer (función() {...}, 25);' - en caso de que alguien haya pasado tanto tiempo buscando esto como acabo de hacer! – bjudson

2

¿Qué versión de ExtJS está usando?

¿Estás seguro de que tienes todo el ExtJS cargado? Cómo se obtiene el mismo error cuando se ejecuta el código de línea de comandos del navegador:

(function(){alert("Hello");}).defer(1000); 
+0

Im usando sólo ejemplos bootstrap.js. Otras muestras funcionan, pero sí en el código de seguimiento de línea de comando no funciona - el mismo error. ¿Puede ser que necesite un poco de Ext.require()? – Kein

+0

Y la versión de ExtJS 4 – Kein

+2

Mucho ha cambiado en ExtJS 4: no espero que los ejemplos de la versión anterior funcionen. Ya no se extienden los objetos nativos de JavaScript. defer() ahora es parte de Ext.Function, no de la función nativa. Prueba el ejemplo publicado por Tommy. –

Cuestiones relacionadas