【问题标题】:How I can return a value from function after store is loaded in ExtJs?在 ExtJs 中加载 store 后如何从函数返回值?
【发布时间】:2016-04-11 15:38:57
【问题描述】:

我有一个存储加载的功能。那就是:

function PdCtrl_Posicionamiento_RegistrarPosicion(numeroPrograma, tren, fechaTren, ramal, secuenciaEstacion, kilometraje, hora, minuto, tipoOrigen, eliminaDependencia) {



storePdCtrl_Posicionamiento_RegistrarPosicion.load({
    params: {
        numeroPrograma: numeroPrograma,
        tren: tren,
        fechaTren: fechaTren,
        ramal: ramal,
        secuenciaEstacion: secuenciaEstacion,
        kilometraje: kilometraje,
        hora: hora + ":" + minuto,
        tipoOrigen: tipoOrigen,
        eliminaDependencia: eliminaDependencia,
        usuario: NOMBRE
    },
    callback: function () {

        var estado = new Array();
        var err = storePdCtrl_Posicionamiento_RegistrarPosicion.getAt(0).get('ESTADO');
        var mensaje = storePdCtrl_Posicionamiento_RegistrarPosicion.getAt(0).get('MENSAJE');

        estado.push(err);
        estado.push(mensaje);

        return estado;
    },

});

}

我需要在其他地方(在函数调用中)获取返回值(数组),但是对于 ExtJs 的工作方式(异步),我无法获取数组。以下行不起作用:

var vl_estado = PdCtrl_Posicionamiento_RegistrarPosicion(numeroPrograma, tren, fechaTren, ramal, secuenciaEstacion, kilometraje, hora, minuto, tipoOrigen, eliminaDependencia);
    console.debug("estado:" + vl_estado);

当我调试变量“estado”时,我没有任何价值。也许我没有很好地解释这种情况。对不起,谢谢。

【问题讨论】:

  • jQuery ajax return value的可能重复
  • 将加载处理程序设置为调用存储加载方法的包装函数。这将允许您在包装方法中使用变量范围,您可以在回调触发时访问和设置该范围。

标签: extjs store


【解决方案1】:

你想错了。你只需在你的回调方法结束时用你的变量调用一个方法。

就这样;

var doSomeThingWithVariable = function(passedVariable){
     alert(passedVariable);
};    
storePdCtrl_Posicionamiento_RegistrarPosicion.load({
        params: {
            numeroPrograma: numeroPrograma,
            tren: tren,
            fechaTren: fechaTren,
            ramal: ramal,
            secuenciaEstacion: secuenciaEstacion,
            kilometraje: kilometraje,
            hora: hora + ":" + minuto,
            tipoOrigen: tipoOrigen,
            eliminaDependencia: eliminaDependencia,
            usuario: NOMBRE
        },
        callback: function () {

            var estado = new Array();
            var err = storePdCtrl_Posicionamiento_RegistrarPosicion.getAt(0).get('ESTADO');
            var mensaje = storePdCtrl_Posicionamiento_RegistrarPosicion.getAt(0).get('MENSAJE');

            estado.push(err);
            estado.push(mensaje);

            doSomeThingWithVariable(estado);
        },
    });

【讨论】:

    【解决方案2】:

    你试过了吗:

    callback: function (records) {
        if (records.length > 0) {
            var estado = new Array();
            var err = records[0].get('ESTADO');
            var mensaje = records[0].get('MENSAJE');
            estado.push(err);
            estado.push(mensaje);
            return estado;
        } else {
            return null;
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多