2016-10-01 7 views
0

以下のコードでは、レコードを手動でストアに追加します(dataStore)。私は(cmbラベル)コンボボックスにストアをロードしようとする。しかし、私は次のエラーを取得:ストアがデータをロードするためにプロキシを呼び出すようにしようとしているかのようにExtJS:ストアをコンボボックスに接続していますか?

http://localhost:1841/CurrencyConvert.model.CurrencyCode?_dc=147hj_126&query=&page=1&start=0&limit=25 404 (Not Found)

をそれが表示されます(それが持っているにもかかわらず、すべてのデータはすでに手動でロードされています)。以下は、ストアです:

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

そしてストアが使用されているAjaxリクエスト:

{ 
    "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:ストアの定義を以下の

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

は私がフェッチしていたサンプルデータです

Ext.define('CurrencyConvert.model.CurrencyCode', { 
    extend : 'Ext.data.Model', 
    pageSize: 0, 
    fields : [ 
     { 
      name : 'code', 
      value : 'string' 
     }, 
     { 
      name : 'rate', 
      value : 'float', 

     } 
    ] 
}); 

答えて

0

いいえ、店はあなたがそうするならば、あなたはどこかにあなたのコードベースでは、このような定義を持っている必要があり

model : 'CurrencyConvert.model.CurrencyCode', 

として定義されmodelを取得しようとしている:

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

とそのファイルをロードしなければなりません。例99%で、モデルファイルは、アプリケーションが名前CurrencyConvertを持つことになり、app/model/CurrencyCode.jsに配置されるだろう、と店は私が必要ですが、それでも同じメッセージが立ち上がっ追加requiresセクション

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

が含まれます。ストアは私のAjax関数(それぞれのインデックスにデータがあることを示すconsole.logの表示)では正しくロードされますが、コンボボックスにストアを接続すると、このエラーが表示されます。私は上記のモデルの私の定義を追加しました。それ以上の提案があれば幸いです。 –

関連する問題