以“0”为前缀存储数字

Store numbers with '0' as prefix

我不知道怎么说,但我还是不明白。这是我的代码:

Ext.define("PL.view.list.listOnly", {
  extend: 'Ext.form.Panel',
  alias: 'widget.listlistonly',
  config:{
      fullscreen: true,
      title: 'Master barang',
      items:[{
            xtype : 'panel',
            layout: {
                type: 'fit',
                align : 'stretch',
                pack  : 'start',
            },
            defaults: {
                allowBlank: true,
                msgTarget: 'side',
                labelWidth: 60,
                margin: '5 5 5 5',
            },
            items:[{
                    xtype:'list',
                    height: '100%',
                    masked: { xtype: 'loadmask',message: 'Loading...' },
                    scrollable: {
                        direction: 'vertical',
                        directionLock: true
                    },
                    store:{
                        fields: [{
                                name:'szName',
                            },{
                                name:'szProductID',
                            },{
                                name:'szBarcode',
                        }],
                        autoLoad: true,
                        pageSize: 20,
                        proxy: {
                            type: 'ajax',
                            url: 'store/product/loadData.php',
                            pageParam: 'param',
                            reader: {
                                type: 'json',
                                rootProperty: 'topics',
                            }
                        }
                    },
                    variableHeights: false,
                    useComponents: true,
                    itemTpl: '<div class="myButton">' +
                    '<input type="button" name="{szProductID}" value="Edit" ' +
                    'style="padding:3px;">' +
                    '</div>' +
                    '<div class="myContent">'+ 
                    '<div>PLU : <b>{szProductID}</b>, Barcode: <b>{szBarcode}</b></b></div>' +
                    '<div>Nama: <b>{szName}</b></div>' +
                    '</div>',
                 }]
             }],        
        scrollable : false,
    },   
});

这就是我从 json 得到的:

{"topics": [{
        "szProductID": 1001, 
        "szBarcode": 002, 
        "szName": "STANDARD BLACK"
     },{
        "szProductID": 1100420020479, 
        "szBarcode": 1100420020479, 
        "szName": "STANDARD BLUE"
      }], 
 "totalCount": 2}

如您所见,有一个“002”(szBarcode 字段),这是我的问题。该列表仅显示“2”而不是“002”。这应该将“002”显示为 szBarcode,但我不知道如何解决这个问题。

任何帮助将不胜感激

问题是 barcode: 002barcode: 2 在 JSON 格式中的意思完全一样。数字前加零不算数。

您可以做大约四种不同的事情。

  1. 如果您可以访问服务器代码,您可以更改它以将条码字段作为字符串发送给您 (barcode:"002")。
  2. 如果您的条形码总是有一定的长度(比如 13),您可以使用现有的数字,然后再次将其填充到所需的长度。请注意,在一定长度后,会出现精度问题,因为数字存储在固定长度的内存中,而字符串的内存始终是需要的。示例转换代码:
    name:'barcode', convert:function(value) { var str = value.toString(), pad = "0000000000000"; // expand to length of your number return pad.substring(0, pad.length - str.length) + str); }
    (奖励:此代码不会在有人之后执行 (1) 时中断...)
  3. 如果您的 JSON 中没有其他条形码字段,您可以在反序列化之前使用正则表达式将必要的引号添加到 JSON 客户端。
  4. 您可以覆盖 ExtJS 的默认 JSON serialization/deserialization 代码。请注意,这并不像听起来那么容易,并且可能会产生一些副作用。如果您还想将条形码作为零填充 JSON 数字发送回服务器,这是唯一合适的方法。