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

时间:2015-02-20 23:18:19

标签: extjs proxy store

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

这是包含数据的文件:

/数据/触点

[
        ["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"]


]

有没有人对我做错了什么,或者我应该怎么做?我最好不要在数据文件中更改数组的格式。

2 个答案:

答案 0 :(得分:2)

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

在我的数据文件中:/ 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格式的其他选项,而且我觉得我可以将注释放在普通文件中,这太傻了。

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

答案 1 :(得分:1)

错误消息表明收到的JSON无效。您可以在http://jsonlint.com在线查看有效性。如果它无效,那么首先要修复它。

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