2011-06-03 119 views
1

有没有办法将ExtJs网格面板的JSON存储作为两维数组发送给控制器。 在此先感谢。ExtJs Json商店

回答

0

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

var store = new Ext.data.JsonStore({ 
    baseParams: {some_array: [['1'],['2']]}, 
    ... 
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;}); 

要传递到控制器,最好的做法是从GridPanel中触发一个事件并让控制器监听它。

// 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

+0

这种做法是一个我的团队使用了很多。在控制器中监听事件非常重要,因为它可以避免需要传递参数。此外,请记住在网格面板上使用事件,以便您可以参照传入的网格面板。这样,您就可以轻松避免使用Ext.getCmp(),这可能会成为大页面/播客的性能杀手。 – 2015-09-12 14:03:32