【问题标题】:ExtJS : How to map Store fields to JSON properties?ExtJS:如何将存储字段映射到 JSON 属性?
【发布时间】:2017-02-07 04:28:39
【问题描述】:

我有以下 JSON 数据:

{
  "disclaimer": "Exchange rates provided for informational purposes only and do not constitute financial advice of any kind. Although every attempt is made to ensure quality, no guarantees are made of accuracy, validity, availability, or fitness for any purpose. All usage subject to acceptance of Terms: https://openexchangerates.org/terms/",
  "license": "Data sourced from various providers; resale prohibited; no warranties given of any kind. All usage subject to License Agreement: https://openexchangerates.org/license/",
  "timestamp": 1475110853,
  "base": "USD",
  "rates": {
    "AED": 3.672983,
    "AFN": 66.5538,
    "ALL": 122.0421,
    "AMD": 473.5925,
    "ANG": 1.7763,
    "AOA": 165.571834,
    "ARS": 15.3169,
    "AUD": 1.299338,
    "AWG": 1.792667,
    "YER": 250.130999,
    "ZAR": 13.61321,
    "ZMK": 5252.024745,
    "ZMW": 9.831204,
    "ZWL": 322.387247
  }
}

我的模型定义如下:

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

这样我就可以获得货币代码(即“USD”)和汇率。但问题是货币代码本身就是实际汇率的属性名称;那么我将如何创建我的商店以便在我的模型中同时获得代码和费率?

例如: 对于"AED": 3.672983,我希望code 值保持“AED”,rate 字段保持 3.672983。

【问题讨论】:

    标签: javascript json extjs data-binding


    【解决方案1】:

    你可以这样做:

    Ext.define('CurrencyConvert.model.CurrencyCode', { 扩展:'Ext.data.Model', 字段:[ { 名称:'代码', 值:'字符串', 转换:函数(v,rec){ === 在此处添加您的逻辑 === } }, { 名称:'率', 值:'浮动' 转换:函数(v,rec){ === 在此处添加您的逻辑 === } } ] });

    【讨论】:

    • 而逻辑是?
    【解决方案2】:
    Ext.define('CurrencyConvert.model.CurrencyCode', {
        extend : 'Ext.data.Model',
        fields : [
            {
                name : 'code',
                value : 'string'
            },
            {
                name : 'rate',
                value : 'float', 
                convert : function(value, record) {
                    return jsonData.rates[record.get('code')]
                }
            }
        ]
    });
    

    【讨论】:

    • 这只是部分修复。我认为最好的方法是使用常规 javascript 手动加载商店以获取代码和费率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多