Im folgenden Code, ich manuell hinzufügen Datensätze zu einem Geschäft (dataStore
genannt). Aber wenn ich versuche, den Laden zu einem Kombinationsfeld zu laden (mit der Bezeichnung cmb
), erhalte ich folgende Fehlermeldung:ExtJS: Verbinden eines Speichers mit einem Kombinationsfeld?
http://localhost:1841/CurrencyConvert.model.CurrencyCode?_dc=147hj_126&query=&page=1&start=0&limit=25 404 (Not Found)
Es scheint, als ob der Laden versucht, den Proxy zu rufen Daten zu laden (auch wenn es hat alle Daten bereits, manuell von mir geladen). Im Anschluss ist der Laden:
Ext.define('CurrencyConvert.store.CurrencyCode', {
extend : 'Ext.data.Store',
model : 'CurrencyConvert.model.CurrencyCode',
storeId : 'currencyCode',
addRate : function(currencyCode, currencyRate) {
this.add({
code : currencyCode,
rate : currencyRate
});
}
});
Und Ajax-Anfrage, wo der Speicher verwendet wird:
Ext.Ajax.request({
url : 'data.json',
method : 'GET',
dataType: 'currency.json',
item : cmb,
success: function(response)
{
console.log('Success');
var result = Ext.JSON.decode(response.responseText);
var currencyCodes = Object.keys(result.quotes);
this.dataStore = Ext.create('CurrencyConvert.store.CurrencyCode', {});
for(var x = 0; x < currencyCodes.length; x++)
{
this.dataStore.addRate(currencyCodes[x], result.quotes[currencyCodes[x]]);
console.log(this.dataStore.getAt(x).get('code') + " : " + this.dataStore.getAt(x).get('rate'));
}
cmb.emptyText = "-Chose Currency-";
cmb.store = this.dataStore;
console.log("Stuff: " + this.dataStore.getAt(2).get('code') + " : " + this.dataStore.getAt(2).get('rate'));
cmb.displayField = 'code';
cmb.valueField = 'code';
},
failure: function(response) {
console.log('Failed!');
console.log(response);
},
});
Beispieldaten Es folgt ich holen:
{
"success":true,
"terms":"https:\/\/currencylayer.com\/terms",
"privacy":"https:\/\/currencylayer.com\/privacy",
"timestamp":1475354167,
"source":"USD",
"quotes":{
"USDAED":3.672904,
"USDAFN":65.550003,
"USDALL":122.239998,
"USDAMD":473.959991,
"USDANG":1.770403,
"USDAOA":165.067001,
"USDARS":15.250402,
"USDAUD":1.304104,
"USDAWG":1.79,
"USDAZN":1.620604,
"USDBAM":1.742204,
"USDBBD":2,
"USDBDT":78.430401,
"USDBGN":1.752404,
"USDBHD":0.377041,
"USDBIF":1651,
"USDBMD":1,
"USDBND":1.362804,
"USDBOB":6.860399,
"USDZAR":13.710364,
"USDZMK":5156.103593,
"USDZMW":10.020363,
"USDZWL":322.355011
}
}
EDIT: Der Laden Definition
Ext.define('CurrencyConvert.model.CurrencyCode', {
extend : 'Ext.data.Model',
pageSize: 0,
fields : [
{
name : 'code',
value : 'string'
},
{
name : 'rate',
value : 'float',
}
]
});
ich das erfordert hinzugefügt enthält aber immer noch die gleiche Meldung kommt. Der Speicher wird korrekt in meinen Ajax-Funktionen geladen (die console.log zeigt, dass jeder der Indizes Daten enthält), aber irgendwie, wenn ich den Speicher mit dem Kombinationsfeld verbinde, taucht dieser Fehler auf. Ich habe meine Definition des Modells auch oben hinzugefügt. Irgendwelche weiteren Vorschläge würden geschätzt. –