ExtJS - 使用数组 Reader 存储代理加载数据

ExtJS - Store proxy loading data using Array Reader

我在将一组数据从外部文件加载到我的商店时遇到问题。

这是包含数据的文件:

/data/contacts

[
        ["Lisa", "lisa@hotmail.com", "555-222-3333"],
        ["Bart", "bart@hotmail.com", "555-222-3333"],
        ["Homer", "homer@hotmail.com", "555-222-3333"],
        ["Marge", "marge@hotmail.com", "555-222-3333"]
]

这是我的店铺:

Ext.define('MyApp.store.Contacts', {
    extend: 'Ext.data.Store',
    autoLoad: true,
    alias: 'store.contacts',
    model: 'MyApp.model.Contact',

    proxy: {
        type: 'ajax',
        reader: {
            type: 'array'
        },
        url: '../data/contacts'
    }
});

这是我的模型:

Ext.define('MyApp.model.Contact', {
    extend: 'Ext.data.Model',
    alias: 'model.contact',

    fields: [
        {name: 'name', mapping: 0},
        {name: 'email', mapping: 1},
        {name: 'phone', mapping: 2},

    ]
});

我收到这个错误:

[E] Ext.JSON.decode(): You're trying to decode an invalid JSON String: [
    ["Lisa", "lisa@hotmail.com", "555-222-3333"],
    ["Bart", "bart@hotmail.com", "555-222-3333"],
    ["Homer", "homer@hotmail.com", "555-222-3333"],
    ["Marge", "marge@hotmail.com", "555-222-3333"]


]

有人对我做错了什么或我应该怎么做有什么建议吗?最好我不想更改数据文件中数组的格式。

好吧,我意识到我做错了什么。这是我犯的一个非常愚蠢的用户错误。

在我的数据文件中:/data/contacts,我真正拥有的是:

[
    ["Lisa", "lisa@hotmail.com", "555-222-3333"],
    ["Bart", "bart@hotmail.com", "555-222-3333"],
    ["Homer", "homer@hotmail.com", "555-222-3333"],
    ["Marge", "marge@hotmail.com", "555-222-3333"]

]


// [
//     {name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-222-1212'},
//     {name: 'Bart', email: 'bart@simpsons.com', phone: '555-333-2212'},
//     {name: 'Homer', email: 'homer@simpsons.com', phone: '555-122-1212'},
//     {name: 'Marge', email: 'marge@simpsons.com', phone: '555-123-1212'}
// ]

我之前正在为我的 JSON 格式测试其他选项,我愚蠢地认为我可以在普通文件中放置注释 //。

从文件中删除注释将修复错误。现在可以将此文件中定义的数组加载到存储中。

错误信息说收到的JSON无效。您可以在 http://jsonlint.com 在线检查有效性。如果无效,首先要修复。

然后,我多年来第一次看到 ajax 代理和数组 reader 与 Ext 的组合,我不确定它是否受支持。