2012-08-14 83 views
1

在EXTJS中,我將使用模型並存儲我的網格。現在的問題是,有時候json不會匹配模型。那麼在我的模型中會有更少的信息。發生這種情況時EXTJS將不會在網格中顯示任何數據。所以我找了一個修復,發現這個:json不匹配模型

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,正確配置您的模型,並確定您的設置。