ExtJS:在将tpl和store存储到dataview之后,data [root] .slice不是函数错误

时间:2014-10-27 14:45:08

标签: html extjs

我有一个模板,一个商店和一个简单的数据视图,我添加了商店和tpl。我无法运行它并收到以下错误:data [root] .slice不是函数。

继承我的小提琴https://fiddle.sencha.com/#fiddle/cc9

感谢。

1 个答案:

答案 0 :(得分:0)

您的商店格式错误,当您的模型已经静止时,您无法按照设置的方式设置动态列。

这可以解决你的问题:

var store = Ext.create("Ext.data.Store",{
   fields:["VAL", "HEAT"],
   autoLoad:true,
   proxy:{
    type:"ajax",
    url:"data1.json",
    reader:{
      type:"json",
      root:"data.ROWS"

    }
  }
 });
    var myTpl = new Ext.XTemplate(

 '<table border="1px" border-color="#444444" width="100%">',
    '<tr>',
        '<th>VAL</th>',
         '<th>HEAT</th>',
    '</tr>',
    '<tpl for=".">',
       '<tr>',
            '<td align="center">{VAL}</td>',
            '<td align="center">{HEAT}</td>',
       '</tr>',
     '</tpl>',
 '</table>'
 );

 var dataview = Ext.create("Ext.view.View",{
    store: store,
    tpl:myTpl,
    itemSelector:"",
    renderTo:Ext.getBody()

});

你的data1.json

{
    "data" : {

      "COLUMNS": [
         "Column 1",
         "Column 2",
         "Column 3"
       ],


      "ROWS": [
          {"VAL":"R1C1", "HEAT":1}, 
          {"VAL":"R1C2", "HEAT":3}, 
          {"VAL":"R1C3", "HEAT":2},
          {"VAL":"R2C1", "HEAT":1}, 
          {"VAL":"R2C2", "HEAT":1}, 
          {"VAL":"R2C3", "HEAT":4}
      ]

     }
}