2012-07-17 18 views
2

你能幫我解決我遇到的loadData函數作爲Ext.data.JsonStore的一部分的問題嗎?我創建我運行到這個問題的一個基本的例子:ExtJS Ext.data.JsonStore loadData

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Ext JSON example</title> 
    <script type="text/javascript" src="lib/ext-base.js"></script> 
    <script type="text/javascript" src="lib/ext-all.js"></script> 
<script> 
    function example() { 
     var exampleData = "{'exampleJSON' : {'exampleArray':[{'exampleID':1,'name':'Fred','description':'a guy'},{'exampleID':2,'name':'sue','description':'a girl'}]}}"; 

     var exampleStore = new Ext.data.JsonStore({ 
      data: new Ext.data.MemoryProxy(exampleData), 
      autoLoad: false, 
      root: 'exampleJSON.exampleArray', 
    fields: [ 
      {mapping: "exampleID", name: 'exampleID'}, 
      {mapping: "name", name: 'name'}, 
      {mapping: "description", name: 'description'} 
    ], 
      listener: { 
       load: function (oStore, ayRecords, oOptions) 
     { 
      alert('loaded successfully'); 
     } 
      } 
     }); 

     exampleStore.loadData(exampleData); 
    } 

</script> 
</head> 
<body> 
<center><button onclick="example();">Click for Example</button></center> 
</body> 
</html> 

我運行到是我得到這個錯誤的螢火蟲報告的問題: obj.exampleJSON是不確定的 這可能是因爲我將根設置爲'exampleJSON.exampleArray'導致的。 有人可以幫忙指出我做錯了什麼嗎?

(使用ExtJs 4.1.0)

謝謝你們。

編輯:設置它,將ext-all.js和ext-base.js放在lib文件夾中。

回答

1

感謝您的回覆,他們有助於將我送上正確的道路。我能夠通過刪除「數據」字段來讓我的原始示例正常工作。我猜測它是在我嘗試調用loadData時導致衝突的。解決方案列出beflow

function example() { 
     var exampleData = {'exampleJSON' : {'exampleArray':[{'exampleID':1,'name':'Fred','description':'a guy'},{'exampleID':2,'name':'sue','description':'a girl'}]}}; 

     var exampleStore = new Ext.data.JsonStore({ 
      autoLoad: false, 
      root: "exampleJSON.exampleArray", 
    fields: [ 
      {mapping: "exampleID", name:"exampleID"}, 
      {mapping: "name", name:"name"}, 
      {mapping: "description", name:"description"} 
    ], 
      listeners: { 
       load: function (oStore, ayRecords, oOptions) 
     { 
      alert('loaded successfully: ' + ayRecords.length); 
     } 
      } 
     }); 

     exampleStore.loadData(exampleData); 
    } 
2

你的代碼是錯誤的在許多地方:

Ext.define('MyModel', { 
    extend: 'Ext.data.Model', 
    fields: ['exampleID', 'name', 'description'] 
}); 

function example() { 
    var exampleData = [{ 
     exampleID: 1, 
     name: 'Fred', 
     description: 'a guy' 
    }, { 
     exampleID: 2, 
     name: 'sue', 
     description: 'a girl' 
    }]; 

    var exampleStore = new Ext.data.Store({ 
     model: 'MyModel', 
     data: exampleData 
    }); 
} 

此外,還有爲分機4沒有轉基文件,所以它是一個多餘包括。

+0

感謝您的答覆。我必須定義一個模型嗎?我試圖避免定義一個模型,因爲我使用的實際json結構更加複雜,填充了嵌套列表和60多個字段。 – azdragon2 2012-07-17 21:45:13

+0

您可以在商店中指定內聯字段,但在引擎蓋下方只創建一個模型。即使您確實指定了商店中的字段,但實際上並沒有更短的時間。 – 2012-07-17 22:24:41

+0

您應該在模型中添加字段在配置中。 – Eydun 2013-05-08 19:16:15