简体   繁体   English

在JavaScript中创建动态绑定

[英]creating a dynamic binding in JavaScript

I'm implementing a feature which will allow me to dynamically add columns into a JavaScript table: 我正在实现一项功能,该功能使我可以将列动态添加到JavaScript表中:

for(var i = 0; i < info.length; i++){

        var temp = [];

        temp.push(parseInt(info[i].site_id));
        temp.push(info[i].site);
        temp.push(info[i].site_code);
        temp.push(processArray(info[i].tc10));
        temp.push(processArray(info[i].tc9x_test));
        temp.push(processArray(info[i].tc9x_build));
        temp.push(processArray(info[i].oracle_dev));
        temp.push(processArray(info[i].database));
        temp.push(processArray(info[i].baseline));
        temp.push(processArray(info[i].push_windows));
        temp.push(processArray(info[i].push_unix));
        temp.push(processArray(info[i].license));
        temp.push(processArray(info[i].tcx));
        temp.push(processArray(info[i].eng));
        temp.push(processArray(info[i].perforce_proxy));
        temp.push(processArray(info[i].volume_server));
        temp.push(info[i].windows_ref_unit_location);
        temp.push(info[i].unix_ref_unit_location);
        temp.push(info[i].windows_rte_location);
        temp.push(info[i].unix_rte_location);
        temp.push(info[i].windows_toolbox_location);
        temp.push(info[i].unix_toolbox_location);
        temp.push(info[i].UGII_LICENSE_FILE);
        temp.push(info[i].UGS_LICENSE_SERVER);
        temp.push(info[i].unix_dev_units);
        temp.push(info[i].unix_devop_path);
        temp.push(info[i].perforce_proxy_path);
        temp.push(info[i].primary_contact);
        temp.push(info[i].secondary_contact);
        temp.push(info[i].num_users);
        temp.push(info[i].TC_12);

            // check if new columns got added:
        if(len > 29){
            for(var j = 30; j < len; j++){
                var col = columns[j];
                temp.push(info[i].col);
            }
        }
            rows.push(temp);
    }
    return rows;
}

var rows = [[]] holds the table data ... info[[]] contains the JSON objects queried from the database. var rows = [[]]保存表数据... info[[]]包含从数据库查询的JSON对象。 The problem in on this piece of code: 这段代码中的问题:

for(var j = 30; j < len; j++){
    var col = columns[j];
    temp.push(info[i].col);
}

I'm trying to dynamically bind col with some of the attributes of info . 我正在尝试将colinfo某些属性动态绑定。 But I don't know whether is possible or not ... How could I do that? 但是我不知道是否可能...我该怎么做? Suppose a user added a new column, TC_12 . 假设用户添加了一个新列TC_12 Thus, I don't know TC_12 exists, so I want to dynamically bid col into info[i] so it could somehow yield me info[i].TC_12 . 因此,我不知道TC_12存在,所以我想将col动态出价为info[i]以便以某种方式让我得到info[i].TC_12 Any ideas? 有任何想法吗?

Use square bracket notation to use the value of a variable or the result of some other expression as the object property. 使用方括号表示法将变量的值或其他表达式的结果用作对象属性。

temp.push(info[i][col]);

FYI, you can do all those pushes with a single call to .push() by passing multiple arguments... 仅供参考,您可以通过传递多个参数,一次调用.push()来完成所有这些推送...

    temp.push(parseInt(info[i].site_id),
              info[i].site,
              info[i].site_code,
              processArray(info[i].tc10),
              processArray(info[i].tc9x_test),
              // etc...
             );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM