2012-02-07 54 views
0

我使用extjs並加載了一個帶有存儲加載器的json文件。我如何從json文件加載數據

我想加載一個json文件。它將包含「totalRecords」,我想把它放在var中。例如var Records。這樣我可以在我的應用程序的某些位置顯示它,並將其用於警報。

感謝你的幫助,我知道有這樣的:

total = Ext.create('Ext.data.Store', { 
model: 'step1', 
proxy: { 
     type: 'ajax', 
     url: 'testevents.json', 
     reader: { 
      type: 'json', 
      root: 'slaevents' 
     } 
}, 
listeners: { 
    load: function() { 
     records = total.getRange() 
     test = records[0].get('event') 
     alert('1 =' +test) 
    } 
}, 
autoLoad:true 
}); 
alert('2 =' +test) 

這將顯示 「1 =其他」 警報。那是對的。並且「2 =未開封」。那是錯的。我如何使用此店外的測試?

感謝

+0

我總是使用裝載機。所以它會在網格中加載。此外,我試圖做一個計數,但總是返回0.我只是不知道該怎麼做 – 2012-02-07 13:36:06

+0

我確實使用谷歌,但如果你不知道你在找什麼是很難的。我用代碼編輯我嘗試 – 2012-02-07 13:45:07

回答

2

要認識到,所以它什麼也沒有,當你在JS把它分配給一個變量隨即你的店不會立即加載。您需要監聽商店加載並分配它,或者在回調中分配它。例如,這工作正常:

// get the countries 
var countries = Ext.create('Ext.data.Store', { 
    fields: ['id','name'], 
    proxy: { 
     type: 'ajax', 
     url: '../getCountries', 
     reader: 'json' 
    }, 
    listeners: { 
     load: function() { 
      records = countries.getRange() 
      alert(records[0].get('name')) 
     } 
    } 
}); 

這提醒「阿根廷」。

records成爲Ext.data.Model對象的數組,其中每個對象都具有Ext.data.Model所具有的所有方法。這在API中涵蓋了here

+0

,但我讀了一些地方,我不能使用該商店以外的記錄[0]? – 2012-02-07 19:06:30

+0

這將是記錄** s ** [0]。我不確定你讀的是什麼,在你的代碼中給它一個旋轉,對我來說工作正常。請注意,我是**不**執行「** var ** records = ...」,這將使「記錄」成爲局部變量,而是一個全局變量,因此它可以在您的代碼中的任何位置訪問。當然,你也必須記住我剛開始所說的關於商店沒有立即加載的部分。所以當你的js初始化時,你將無法調用記錄[0] .get('name'),因爲它是空的,直到ajax返回。但是你可以把它放在ajax返回後調用的其他函數中。 – Geronimo 2012-02-07 20:56:47

+0

我已經更新了上面的代碼 – 2012-02-08 10:58:47