ExtJs JSONStore 输入数据格式
Posted
技术标签:
【中文标题】ExtJs JSONStore 输入数据格式【英文标题】:ExtJs JSONStore Input Data Format 【发布时间】:2012-06-25 09:02:55 【问题描述】:这是我的代码:
function getStore (json)
var reader = new Ext.data.JsonReader(
root : 'data',
successProperty: 'success',
totalProperty: "rows",
fields : [
name: 'num', allowBlank:'true',
name: 'date', dateFormat:'d.m.Y H:i:s', type: 'date',
name: 'signerFIO', type: 'string',
name: 'checkSign', type: 'boolean'
]
);
var store = new Ext.data.JsonStore (
data : json,
reader : reader
);
return store;
从服务器到达的数据是:"data":["num":"111","signerFIO":"hello","checkSign":true,"date":"25.05.2012"],"success":1,"rows":1
我尝试将“json”函数参数设置为原始 json(到达时)和 Ext.util.JSON.decode(response.responseText)
我已经在 FF 和 FireBug 中尝试过这段代码,但我遇到了奇怪的 h is undefined
错误。
有人知道怎么回事吗?
更新
这个
var store = new Ext.data.JsonStore (
data : json,
fields : ['data']
);
对我来说没有错误,但也没有加载数据。
【问题讨论】:
你试过用调试版的extjs吗?它应该给你更多的细节。另外你是如何加载商店的? 感谢您的回答!我试试看 【参考方案1】:我真的不确定你想用这段代码做什么,但这会让它工作(假设 json 是一个解码的对象而不是一个字符串):
Ext.define("MyItem",
extend: "Ext.data.Model",
fields: [
name: 'num', allowBlank:'true',
name: 'date', dateFormat:'d.m.Y H:i:s', type: 'date',
name: 'signerFIO', type: 'string',
name: 'checkSign', type: 'boolean'
]
);
function getStore (json)
var store = new Ext.data.JsonStore (
data: json.data,
model: MyItem
);
return store;
【讨论】:
感谢您的回答!我会试试你的变种。而且,当然,这是给你的重点=)我已经设法解决了这个问题(见我的回复),但我不知道哪里出错了。【参考方案2】:问题出在阅读器上(其实我也不知道是什么问题)。 这个:
function getStore (jsonRequestUrl)
var store = new Ext.data.JsonStore (
autoLoad : false,
proxy : new Ext.data.HttpProxy( url: jsonRequestUrl, method: 'POST' ),
root : 'data',
successProperty : 'success',
totalProperty : "rows",
idProperty : "id",
fields : [
name: 'num', type: 'string', mapping: 'num',
name: 'signerFIO', type: 'string', mapping: 'signerFIO',
name: 'checkSign', type: 'boolean', mapping: 'checkSign',
name: 'date', dateFormat:'d.m.Y', type: 'date', mapping: 'date'
]
);
store.load();
return store;
为我工作。
【讨论】:
这里要小心,store.load()是异步的,在数据加载之前会返回store。 非常感谢!还有什么方法是同步的? 不确定是否可以使其同步,但通常的想法是监听加载事件的完成,然后做一些有用的事情。您可以在 store 上设置一个侦听器,也可以将一个回调函数传递给 load 方法。查看 Sencha 文档和正确完成此操作的示例。以上是关于ExtJs JSONStore 输入数据格式的主要内容,如果未能解决你的问题,请参考以下文章
我如何将 loadData 函数作为 Ext.data.JsonStore ExtJS3.0.0 的一部分?
如何使用 ExtJS 访问从 JsonStore 获取的值?
如何在 ExtJS 3.4 中添加/合并多个 Ext.data.JsonStore