【问题标题】:ExtJs JSONStore Input Data FormatExtJs JSONStore 输入数据格式
【发布时间】: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吗?它应该给你更多的细节。另外你是如何加载商店的?
  • 感谢您的回答!我试试看

标签: extjs4


【解决方案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 文档和正确完成此操作的示例。
猜你喜欢
  • 2011-12-11
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2011-08-28
  • 2017-11-26
相关资源
最近更新 更多