使用' 0'存储号码作为前缀

时间:2016-02-14 16:39:51

标签: php extjs sencha-touch

我不知道怎么说,但我仍然没有做对。这是我的代码:

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}

正如您所看到的,有一个&#39; 002&#39; (szBarcode字段),这是我的问题。该列表仅显示&#39; 2&#39;而不是&#39; 002&#39;。这应该显示&#39; 002&#39;作为szBarcode,但我不知道如何解决这个问题。

任何帮助都会很感激

1 个答案:

答案 0 :(得分:0)

问题是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序列化/反序列化代码。请注意,这并不像听起来那么容易,可能会产生一些副作用。如果您想将条形码作为零填充JSON号码发送回服务器,这是唯一合适的方式。