我在使用包含'eval'的ajaxmin缩小脚本时遇到错误。在下面的语句中,我收到错误'grid is undefined'。缩小后,变量'grid'已更改为其他名称。我已经解决了这个问题,将网格对象存储在窗口中,如'window.grid'。但还有其他方法可以解决这个问题吗?
$(form).html($("#" + this._gridID + "_bulkEditTemplate #" + colName + "_bulkEdit").html());
$(target).append(form);
var grid = $find(this._gridID);
var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");
$("#" + this._gridID + " #" + colName).html($($("#" + this._gridID + "_bulkEditTemplate").tmpl(optionsObj).find('#' + colName + ' option')));
var editElement = $("#" + this._gridID + " #" + colName);
$(editElement).val(this.currentCellValue == null ? "" : this.currentCellValue);
$(editElement).val(this.currentCellValue).focus();
$(editElement)[0].focus();
由于
答案 0 :(得分:1)
一般情况下,应尽可能避免使用eval()
。您可以替换此eval()
行:
var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");
用这个:
var optionsObj = grid.jsonModeMgr._jsonDataAndOption[colName + "_Options"];
要通过计算的字符串名称或变量中包含的字符串访问属性,可以使用[string here]
语法而不是点语法。