2016-10-01 4 views
0

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', 

     } 
    ] 
}); 

Antwort

0

Nein, ist der Laden versucht, die model zu erhalten, die Sie als

definiert
model : 'CurrencyConvert.model.CurrencyCode', 

wenn Sie dies tun, haben Sie irgendwo in Ihrem Code-Basis eine Definition wie diese haben:

Ext.define('CurrencyConvert.model.CurrencyCode', 
    extend:'Ext.data.Model', 
    ... 
}); 

und Sie müssen diese Datei geladen haben. In 99% der Fälle würde die Modelldatei in app/model/CurrencyCode.js platziert wird, würde die Anwendung die Namen CurrencyConvert, und der Laden würde einen requires Abschnitt

requires:[ 
    'CurrencyConvert.model.CurrencyCode' 
] 
+0

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. –

Verwandte Themen