extjs store中数据转换成json

主要有以下两种方法: 

1.

var jsonData = Ext.encode(Ext.pluck(store.data.items, 'data')); 

2.

var datar = new Array();  
var jsonDataEncode = "";  
var records = store.getRange();  
for (var i = 0; i < records.length; i++) {  
    datar.push(records[i].data);  
}  
jsonDataEncode = Ext.util.JSON.encode(datar);  

项目中需要将添加或者修改过的的积分兑换奖品记录传给后台,例如。

'fenexchyuliu button#SaveBtn' : {
  click : function(btn) {
    var grid = btn.up('gridpanel');
    var mr = grid.getStore().getModifiedRecords().slice(0);// 复制所有更新过的记录
    var recordCount = grid.getStore().getCount();// 获取数据集中记录的数量
    alert(mr.length);
    if (mr.length == 0) { // 确认修改记录数量
      alert("没有修改数据!");
      return;
    };
    var datar = new Array();
    for (var i = 0; i < mr.length; i++) {
    datar.push(mr[i].data);
    }
    Share.AjaxRequest({
    url : 'fen/rsvnfen',
      params : {
        listdata : Ext.encode(datar),
        loadname : btn.up("window").loadname
      },
      callback : function() {
      btn.up("window").close();
      }
    });
  }
}

 
array, propertyName ) : Array

Plucks the value of a property from each item in the Array. Example:

Ext.Array.pluck(Ext.query("p"), "className"); // [el1.className, el2.className, ..., elN.className]

Available since: 4.0.0

Parameters

  • array : Array/NodeList

    The Array of items to pluck the value from.

  • propertyName : String

    The property name to pluck from each element.

Returns

Array

The value from each item in the Array.

    上面的示例中用到了数组对象的Slice(start,[end])方法,该方法返回一个新数组,包含了原函数从start到end所指定的元素,但是不包括end元素,比如a.slice(0,3)。如果start为负,则将它作为length+start处理(此处length为数组的长度,比如a.slice(-3,4),相当于a.slice(2,4))。如果end为负,就将它作为length+end处理(次数length为数组的长度,比如a.slice(0,-1)。如果省略end,那么slice方法将一直复制到原数组结尾,比如a.slice(1))。如果省略end,那么slice方法将一直复制到原数组结尾,比如a.slice(1)。如果end出现在start之前,不复制任何元素到新数组中,比如a.slice(4,3)。示例中store.getModifiedRecords().slice(0)的作用就是复制store.getModifiedRecords(),保证store.getModifiedRecords()中的原始数据不受影响。

原文地址:https://www.cnblogs.com/linruiyi2015/p/4974602.html