1

EXTJSでは、モデルを使用してグリッドに保存します。ここで、jsonがモデルと一致しない場合があるという問題があります。私のモデルよりも情報が少なくなります。これが発生すると、EXTJSはグリッドにデータを表示しません。だから私は修正を探してこれを見つけました:

Ext.define('App.Reader', {
extend: 'Ext.data.reader.Json',

extractData: function(root) {
    var me = this,
        values  = [],
        records = [],
        Model   = me.model,
        i       = 0,
        length  = root.length,
        idProp  = me.getIdProperty(),
        node, id, record;

    if (!root.length && Ext.isObject(root)) {
        root = [root];
        length = 1;
    }

    for (; i < length; i++) {
        node   = root[i];
        values = me.extractValues(node);
        id     = me.getId(node);

        record = new Model(values, id, node);
        records.push(record);

        if (me.implicitIncludes) {
            me.readAssociated(record, node);
        }

    }

    return records;
},

extractValues: function(data) {
    var fields = this.getFields(),
        i      = 0,
        length = fields.length,
        output = {},
        field, value;

    for (; i < length; i++) {
        field = fields[i];
        value = this.extractorFunctions[i](data);

        if(value === undefined)
        {
            Ext.iterate(fields, function(key, val) {
                if (data[key] === undefined & i==val) {
                    console.log( "Model field <" + key.name + "> does not exist in data/node.");
                    value = "INVALID OR MISSING FIELD NAME";
                    var p = 0;
                    for(var prop in data) {
                        if(p==i){
                            if(data.hasOwnProperty(prop))console.log("Instead of <" + key.name + "> we have <" + prop + "> with value <" + data[prop]+ ">");
                        }
                        p++;
                    }
                }
            }, this);
        }

        output[field.name] = value;
    }

    return output;
}

});

var myReader = new App.Reader({
type:'json'
});

私はこれをオンラインで見つけました。しかし、これをEXTJS 4.1.1で使用すると、ext-allにエラーが発生します:TypeError:jisundefined。

これに対する修正はどこで探す必要がありますか?

4

1 に答える 1

1

この些細な問題を解決するために複雑なことをする必要はありません。Ext.data.ModelExt.data.Fieldを読み、モデルを適切に構成すれば、準備は完了です。

于 2012-08-14T16:53:23.123 に答える