/ / ExtJs Data Store-Werte leer, aber Rohdatenwert aufgefüllt - Json, ExtJs

ExtJs Data Store-Werte leer, Store Raw-Wert jedoch befüllt - json, extjs

Also habe ich Schwierigkeiten zu ermitteln, warum meineDie Datenwerte von "store" werden nicht für meine itemselector-Komponente ausgefüllt. Die Rohdatenwerte werden jedoch aufgefüllt. Es sieht so aus, als ob mein Modell und meine Geschäfte korrekt eingerichtet sind. Ich versuche gerade diesen ersten bestimmten Teil der Json-Daten zu verwenden, so dass "s die RootProperty auf" data [0] .options "gesetzt ist. Versuchen Sie einfach, den itemselector mit dieser "Area" -Sammlung von Json-Daten zu füllen. Komponenten sind unten, jede Hilfe wäre dankbar.

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);*/
}
}

Geschäft

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");*/
}
});

Modell

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"

Antworten:

0 für die Antwort № 1

Versuchen Sie hinzuzufügen mode Eigentum zu Ihrem itemselector:

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

Sie haben auch nicht eingestellt valueField zu Ihrem "Feld".


0 für die Antwort № 2

Nun ja, ich habe am Ende die Daten manuell dem Rohdatenwert in einem Listener gesetzt, der auf das Ereignis mit geänderter Daten gewartet hat.

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);
}
}
}

Es ist Bootleg, aber es hat funktioniert, weiß aber immer noch nicht, warum diese Model-Instanzen nicht gefüllt wurden.