【问题标题】:ExtJS Ext.data.JsonStore loadDataExtJS Ext.data.JsonStore loadData
【发布时间】:2012-07-16 18:33:54
【问题描述】:

您能帮我解决我在将 loadData 函数作为 Ext.data.JsonStore 的一部分时遇到的问题吗?我创建了一个我遇到的问题的基本示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Ext JSON example</title>
     <script type="text/javascript" src="lib/ext-base.js"></script>
    <script type="text/javascript" src="lib/ext-all.js"></script>
<script>
    function example() {
        var exampleData = "{'exampleJSON' : {'exampleArray':[{'exampleID':1,'name':'Fred','description':'a guy'},{'exampleID':2,'name':'sue','description':'a girl'}]}}";

        var exampleStore = new Ext.data.JsonStore({
            data: new Ext.data.MemoryProxy(exampleData),
            autoLoad: false,
            root: 'exampleJSON.exampleArray',
    fields: [
          {mapping: "exampleID", name: 'exampleID'},
          {mapping: "name", name: 'name'},
          {mapping: "description", name: 'description'}
    ],
            listener: {
                 load: function (oStore, ayRecords, oOptions ) 
         {
            alert('loaded successfully');
         }
            }
        });

        exampleStore.loadData(exampleData);  
    }

</script>
</head>
<body>
<center><button onclick="example();">Click for Example</button></center>
</body>
</html>  

我遇到的问题是 Firebug 报告了这个错误: obj.exampleJSON 未定义 当我将根设置为“exampleJSON.exampleArray”时,可能会导致这种情况。 有人可以帮忙指出我做错了什么吗?

(使用 ExtJs 4.1.0)

谢谢大家。

编辑:要进行设置,请将 ext-all.js 和 ext-base.js 放在 lib 文件夹中。

【问题讨论】:

    标签: extjs jsonstore loaddata


    【解决方案1】:

    您的代码在很多地方都有错误:

    Ext.define('MyModel', {
        extend: 'Ext.data.Model',
        fields: ['exampleID', 'name', 'description']
    });
    
    function example() {
        var exampleData = [{
            exampleID: 1,
            name: 'Fred',
            description: 'a guy'
        }, {
            exampleID: 2,
            name: 'sue',
            description: 'a girl'
        }];
    
        var exampleStore = new Ext.data.Store({
            model: 'MyModel',
            data: exampleData
        });
    }
    

    另外,Ext 4 没有 ext-base 文件,所以它是一个多余的包含。

    【讨论】:

    • 感谢您的回复。我必须定义一个模型吗?我试图避免定义模型,因为我使用的实际 json 结构要复杂得多,其中包含嵌套列表和 60 多个字段。
    • 您可以在商店中指定内联字段,但实际上它只是创建了一个模型。即使您确实在商店中指定了字段,这样做也不会更短。
    • 您应该在模型中的配置中添加字段。
    【解决方案2】:

    感谢您的回复,它们对让我走上正确的道路很有帮助。通过删除“数据”字段,我能够使我的原始示例正常工作。我猜当我尝试调用 loadData 时它会引起冲突。下面列出的解决方案

        function example() {
            var exampleData = {'exampleJSON' : {'exampleArray':[{'exampleID':1,'name':'Fred','description':'a guy'},{'exampleID':2,'name':'sue','description':'a girl'}]}};
    
            var exampleStore = new Ext.data.JsonStore({
                autoLoad: false,
                root: "exampleJSON.exampleArray",
        fields: [
              {mapping: "exampleID", name:"exampleID"},
              {mapping: "name", name:"name"},
              {mapping: "description", name:"description"}
        ],
                listeners: {
                     load: function (oStore, ayRecords, oOptions ) 
             {
                 alert('loaded successfully: ' + ayRecords.length);
             }
                }
            });
    
            exampleStore.loadData(exampleData);  
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2011-08-21
      • 2011-04-19
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多