2011-03-05 55 views
2
 
demos.ListStore = new Ext.data.Store({ 
    model: 'Contact', 
    sorters: 'firstName', 
    getGroupString : function(record) { 
     return record.get('firstName')[0]; 
    }, 

    data: [ 
     {firstName: 'Julio', lastName: 'Benesh'}, 
     {firstName: 'Julio', lastName: 'Minich'}, 
     {firstName: 'Tania', lastName: 'Ricco'}, 
     {firstName: 'Odessa', lastName: 'Steuck'}, 
     {firstName: 'Nelson', lastName: 'Raber'}, 
     {firstName: 'Tyrone', lastName: 'Scannell'}, 
     {firstName: 'Allan', lastName: 'Disbrow'}, 
     {firstName: 'Cody', lastName: 'Herrell'}, 
     {firstName: 'Julio', lastName: 'Burgoyne'}, 
     {firstName: 'Jessie', lastName: 'Boedeker'}, 
     {firstName: 'Allan', lastName: 'Leyendecker'}, 
     {firstName: 'Javier', lastName: 'Lockley'}, 
     {firstName: 'Guy', lastName: 'Reasor'}, 
     ..., 
     ... 
     ] 
}) 

在我的理解中,「data」不是javascript的字典或數組類型。 jQuery支持這種數據類型嗎?什麼是數據類型以及如何初始化它?

我的問題是:

  1. 什麼類型Ext.data.Store的參數(...)?

  2. 此外,數據的類型?

  3. 在這種情況下,我該如何動態初始化數據?
    (我有很多數據,因此靜態分配是不可取的。)

非常感謝!

+0

上添加一塊手錶螢火蟲和調試 – CarneyCode 2011-03-05 08:28:50

+0

你可能想澄清你的「動態初始化數據」是什麼意思的JavaScript。另外,我認爲typeof操作符可能會幫助你。 – 2011-03-05 08:38:27

回答

2

1)是什麼的類型Ext.data.Store的參數的(...)?

它只是一個普通的對象,有一堆屬性被用作關聯數組。幾乎所有在Ext JS中的函數參數都是用這樣的單個對象傳入的。在Ext JS術語中,他們稱之爲「配置對象」。

2)另外,數據的類型?

數據是一個數組。數組中的每個元素都是一個具有一組屬性的對象,用作關聯數組,類似於Ext.data.Store()的參數。

3)在這種情況下,如何能我動態INIT數據?

您可以聲明一個空數組來啓動並將其添加到您的配置對象中。然後分別聲明每行並將它們推入該數組,最後在調用新的Ext.data.Store()時使用配置對象。

希望這些代碼示例是不言自明的。

var cfg = new Object(); // same as var cfg = {}; 
cfg.model = "Contact"; // one way to set a property 
cfg["sorters"] = "firstName"; // another way to set a property 

// one way to set the function 
cfg.getGroupString = function(record) { 
    return record.get('firstName')[0]; 
}; 

// here's another way to set the function 
function myGetGroupString(record) { 
    return record.get('firstName')[0]; 
} 
cfg.getGroupString = myGetGroupString; 

// initializing data long-hand 
cfg.data = new Array(); // same as cfg.data = []; 
var record1 = new Object(); 
record1.firstName = "Mike"; 
record1.lastName = "Lin"; 
cfg.data.push(record1); 

// another way to define a record 
var record2 = {firstName: "Jason", lastName: "Mraz"}; 
cfg.data.push(record2); 

// cfg is just a plain old object used as an associative array/hash 
demos.ListStore = new Ext.data.Store(cfg); 
+0

不錯的格式和詳細的答案,謝謝! – 2011-03-05 09:10:38

0

功能是採取一個參數,並且是一個JavaScript對象類型。

{ 
    model: 'Contact', 
    sorters: 'firstName', 
    getGroupString : function(record) { 
     return record.get('firstName')[0]; 
    }, 
    data: [ ... ] ; 
    } 

這可以直接關聯到一個變量,然後作爲參數傳遞。

var param1 = { 
     model: 'Contact', 
     sorters: 'firstName', 
     getGroupString : function(record) { 
      return record.get('firstName')[0]; 
     }, 
     data: [ ... ] 
     } 

該數據是param1對象中的一個變量,其中包含javascript對象數組。

+0

這是該函數的單個對象參數。您可能被對象的getGroupString成員實際上是一個函數拋出。該大括號實際上有一個匹配的大括號,而不是對象聲明的開始。函數調用在語法上是有效的。 – lsuarez 2011-03-05 08:38:25

+0

@Ithibodeaux - 是的。稍晚的實現,但編輯我的答案已經反映了實際的答案。謝謝;) – 2011-03-05 08:40:20

+0

謝謝你,雖然。 – 2011-03-05 09:13:31

0

傳遞給Ext.data.Store()的參數是一個對象,又名在其他語言字典或關聯陣列。此對象的屬性datadata : [{…},…]是一個簡單的陣列填充有多個對象。

+0

非常感謝:) – 2011-03-05 09:11:27

相關問題