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 的组合,我不确定它是否受支持。
我在将一组数据从外部文件加载到我的商店时遇到问题。
这是包含数据的文件:
/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 的组合,我不确定它是否受支持。