ExtJs Json 存储

Posted

技术标签:

【中文标题】ExtJs Json 存储【英文标题】:ExtJs Json store 【发布时间】:2011-06-03 09:41:19 【问题描述】:

有没有办法将 ExtJs 网格面板的 JSON 存储作为二维数组发送到控制器。 提前致谢。

【问题讨论】:

【参考方案1】:

要从您的商店中获取一组记录,您可以使用:

var store = gridpanel.getStore();
var records = store.getRange();
// If you don't want any of that metadata referring to the gridpanel.
var rawRecords = records.map(function(r) return r.data;);

要将其传递给控制器​​,最佳做法是从网格面板触发事件并让控制器监听它。

// Somewhere in gridpanel or a reference to whatever your custom class is
gridpanel.fireEvent('rawRecordsEvent', rawRecords);
...
// In controller
Ext.define('MyApp.controller.GridController', 
    extend: 'Ext.app.Controller',

    init: function() 
        this.control(
            // gridpanel or alias of whatever your custom class is.
            'gridpanel': 
                 rawRecordsEvent: this.onRawRecordsEvent
             
        );
    ,

    onRawRecordsEvent: function(rawRecords) 
        console.log(rawRecords);
    
);

这是一个很好的例子,说明如何使用控制器来监听视图组件: http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.app.Controller.html

【讨论】:

我的团队经常使用这种方法。在控制器中监听事件非常棒,因为它使您无需传递参数。另外,请记住在网格面板上使用一个事件,这样您将获得传入的网格面板的引用。这样您就可以轻松避免使用 Ext.getCmp (),它可能会成为大页面/doms 的性能杀手。【参考方案2】:

我认为您可以使用 baseParams 选项来发送您需要的任何参数。 例如:

var store = new Ext.data.JsonStore(
    baseParams: some_array: [['1'],['2']],
    ...

【讨论】:

以上是关于ExtJs Json 存储的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 3.0.0 自动重载 json 存储

如何将静态 JSON 从 PHP 返回到 extjs 存储

如何使用 JSON 数据数组加载 extjs 3.4 存储

ExtJS json 存储未填充

extjs 3.4.0 - 如何过滤读取 JSON 的存储

如何从 extjs 存储中获取 JSON 数组中的属性值?