ExtJS Ext.data.JsonStore loadData
Можете ли вы помочь мне решить проблему, с которой я сталкиваюсь, с помощью функции loadData, являющейся частью Ext.data.JsonStore? Я создал базовый пример проблемы, с которой сталкиваюсь:
<!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>
Проблема, с которой я сталкиваюсь, состоит в том, что я получаю эту ошибку, о которой сообщает Firebug:obj.exampleJSON не определен. Это, вероятно, вызывается, когда я устанавливаю корень как "exampleJSON.exampleArray". Может кто-нибудь помочь указать, что я делаю не так?
(используя ExtJs 4.1.0)
Спасибо, парни.
РЕДАКТИРОВАТЬ: чтобы установить это, поместите ext-all.js и ext-base.js в папку lib.
2 ответа
Спасибо за ваши ответы, они были полезны для отправки меня по правильному пути. Мне удалось заставить мой оригинальный пример работать, удалив поле "данные". Я предполагаю, что это вызывало конфликты, когда я пытался вызвать 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);
}
Ваш код неверен в нескольких местах:
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
});
}
Кроме того, для Ext 4 нет файла ext-base, так что это избыточное включение.