2012-08-14 6 views
1

EXTJS에서 모델을 사용하고 내 그리드를 사용합니다. 이제는 json이 모델과 일치하지 않는 문제가 있습니다. 내 모델에는 정보가 적어 질 것입니다. 이 경우 EXTJS는 그리드에 데이터를 표시하지 않습니다. 그래서 내가 수정을 찾았다이 발견 :이 온라인을 발견json not matching model

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 : j는 정의되지 않았습니다.

어디서 수정해야합니까?

답변

1

이 사소한 문제를 해결하기 위해 복잡한 작업을 수행 할 필요가 없습니다. Ext.data.ModelExt.data.Field을 읽고 모델을 올바르게 구성하면 모두 설정됩니다.