2011-06-03 186 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