2

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

<!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 文件夹中。

4

2 回答 2

2

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

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 文件,所以它是一个多余的包含。

于 2012-07-17T21:37:01.600 回答
1

感谢您的回复,它们有助于让我走上正确的道路。通过删除“数据”字段,我能够使我的原始示例正常工作。我猜当我尝试调用 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);  
    }
于 2012-07-17T23:34:36.513 回答