返回数组中存储字段的数据

return data of a field in store in array

本文关键字:数据 字段 存储 数组 返回      更新时间:2023-09-26

这可能是一个纯javascript的问题,但不知何故我不能得到这个权利。我正在使用sencha架构开发extjs4.2。我有一个json响应从服务器发送作为

{
    "data": [{
        "ExamID": 1,
        "ExamName": "Semester-1",
        "MaxMarks": 100
    }, {
        "ExamID": 4,
        "ExamName": "Test-1",
        "MaxMarks": 10
    }, {
        "ExamID": 5,
        "ExamName": "Test-2",
        "MaxMarks": 10
    }]
}

我要找的是只使用"ExamName"的数据重新配置网格。所以"ExamName"应该作为数组在reconfigure()函数中传递。

我无法以数组形式获得"ExamName"。非常感谢您的帮助

       var gridStore = Ext.data.StoreManager.get('ClassSemesterStore');
var g = gridStore.load( {params : {ClassID: ClassData }});
var data = g.data;
var length = data.getCount();
var examName = [];
for(var i = 0; i < length; i++){
  examName.push(data[i]['ExamName']);
}

显示"Uncaught TypeError: Cannot read property 'ExamName' of undefined"

我想如果我正确理解你,你正试图让examName成为一个新的数组,它的内容是你的响应数据中的每个examName ?如果是这样,这应该行得通。

var data = {"data":[{"ExamID":1,"ExamName":"Semester-1","MaxMarks":100},{"ExamID":4,"ExamName":"Test-1","MaxMarks":10},{"ExamID":5,"ExamName":"Test-2","MaxMarks":10}]}
var examName = [];
for(var i = 0; i < data.data.length; i++){
  examName.push(data.data[i]['ExamName']);
}

现在的examName是一个包含"Semester-1", "Test-1"answers"Test-2"的数组

在非数组中存储data。我想这是混合收藏。因此可以使用以下命令:

var examName = [];
for(var i = 0; i < length; i++){
   examName.push(data.items[i].data['ExamName']);
}

或者更好的是像人们建议的那样从你的消息来源获取信息。

另一个不错的选择是Store的collect。你可以这样做:

gridStore.collect('ExamName')

由于存储加载的异步特性导致的错误:

var g = Store.load({
                    params : {ClassID: ClassData },
                   callback : function(records, operation, success){
                    var Excerpt = []; // start with empty array
                    Ext.each(records, function(item) {
                        // add the fields that you want to include
                        var Obj = {
                            third_field: item.get('ExamName')
                        };
                        Excerpt.push(Obj); // push this to the array
                    }, this);
                    console.log(Excerpt);
                   }
});