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 存储的主要内容,如果未能解决你的问题,请参考以下文章