/ / ExtJs Data Store hodnoty prázdne, ale Store Raw hodnota vyplnená - json, extjs

ExtJs Data Store hodnoty sú prázdne, ale Store Uložená surovina - json, extjs

Takže mám problém so zistením, prečo môjhodnoty údajov v obchode sa nevyplňujú pre moju položku itemselector, ale hodnoty nespracovaných údajov sú vyplnené, vyzerá to, že môj model a obchody sú nastavené správne. Snažím sa len využiť túto prvú konkrétnu časť údajov json, takže preto mám rootProperty nastavený na „data [0] .options“. Skúšam naplniť tento selektor položiek touto „oblasťovou“ zbierkou údajov json. Komponenty sú uvedené nižšie, každú pomoc by ste ocenili.

ItemSelector

xtype: "itemselector",
cls: "itemSelectorPlainPanel",
margin: "10 10 10 10",
labelAlign: "top",
height: 200,
flex: 1,
autoScroll: true,
id: "ertcSelector",
buttons: ["add", "remove"],
reference: "ertcSelector",
store: Ext.create("cers.store.ManagerFilterStore"),
displayField: "label",
allowBlank: true,
msgTarget: "side",
fromTitle: "Available ERTC Home Area",
toTitle: "Selected ERTC Home Area",
listeners: {
render: function() {
console.log(this);
/*console.log("Value is " + this.fromField.store.data.items.length);*/
}
}

sklad

Ext.define("cers.store.ManagerFilterStore", {
extend: "cers.util.Store",
requires:[
"cers.model.ManagerFilterItems",
"cers.util.MsgHelper",
"Ext.data.proxy.Rest"
],
model: "cers.model.ManagerFilterItems",
storeId: "managerFilterId",
autoLoad: true,
proxy: {
type: "rest",
method: "GET",
url: "/rest/mgrqueue/init",
extraParams: {
authUserId: "eksioog"
},
reader: {
type: "json",
rootProperty: "data[0].options",
totalProperty: "total",
successProperty: "success",
messageProperty: "message"
}
},
listeners: {
datachanged: function() {
/*console.log("rawData below!!!!");
console.log(this.getProxy());
console.log("Model Info");
console.log(this.getProxy().getModel().getFields());
console.log("getData");
console.log(this.getData());
console.log("Fields");
console.log(this.getProxy().getModel().getFields());
console.log("Model");
console.log(this.getProxy().getModel());
console.log("Store");
console.log(this);
console.log("Data");
console.log(this.getData());*/
console.log("Reader");
console.log(this.getProxy().getReader());
}
},

constructor: function(){
this.callParent(arguments);
/*this.filter("model", "Area");*/
}
});

Model

Ext.define("cers.model.ManagerFilterItems", {
extend: "cers.util.Model",

constructor: function (args) {
this.callParent(args); // Calls the parent constructor of parent class being extended
},
fields: [
{ name: "label", type: "string"},
{ name: "value", type: "string"},
{ name: "active", type: "boolean"},
{ name: "selected", type: "boolean"}
],
idProperty: "label",

getLabel : function() {
return this.get("label");
},

setLabel : function(value) {
this.set("label", value);
},

getValue : function() {
return this.get("value");
},

setValue : function(value) {
this.set("value", value);
},

getActive : function() {
return this.get("active");
},

setActive : function(value) {
this.set("active", value);
},

getSelected : function() {
return this.get("selected");
},

setSelected : function(value) {
this.set("selected", value);
}
});

Json Data

{
"data" : [ {
"model" : "Area",
"functionality" : "ManagerQueueFilter",
"options" : [ {
"label" : "HeadQuarters",
"value" : "12",
"active" : true,
"selected" : false
}, {
"label" : "Northeast",
"value" : "2",
"active" : true,
"selected" : false
}, {
"label" : "Testing Area",
"value" : "41",
"active" : true,
"selected" : false
} ], }
{
"model" : "User",
"functionality" : "ManagerQueueFilter",
"options" : [
{
"label" : "Green, Ted",
"value" : "c0gret6_vzwm",
"active" : false,
"selected" : false
}, {
"label" : "Eksioglu, Oguz",
"value" : "eksioog",
"active" : true,
"selected" : true
} ]
} ],
"total" : 2,
"success" : true,
"message" : "Success"

odpovede:

0 pre odpoveď č. 1

Pokúste sa pridať mode majetok k vášmu itemselector:

...
mode: "local",
...

Tiež ste to nenastavili valueField do svojho „poľa“.


0 pre odpoveď č. 2

No, práve som skončil s manuálnym nastavením údajov rovnajúcich sa hodnote nespracovaných údajov v poslucháčovi, ktorý čakal na udalosť zmenených údajov, napríklad:

listeners: {
datachanged: function() {
for(i = 0; i < this.getData().items.length; i++) {
this.getData().items[i].data = this.getData().items[i].raw;
console.log("New Data " + i);
console.log(this.getData().items[i].data);
}
}
}

Je to ilegálne, ale fungovalo to, stále neviem, prečo sa tieto inštancie modelu nevyplnili.