我正在使用EditableGrid动态生成和操作列模型。根据计划,一切都已经消失,除了Firefox的一个兼容性问题(..不是IE -_-)。我明白这可能是某种Closure问题?我似乎无法解决这个问题。这是出了问题的地方:
EditableGrid.prototype.initializeGrid = function () {
with (this) {
//apply cell validators and inforenderers in headers
var regex = [];
for (var count = 0; count < selectedColumnNames.length; ++count) {
var columnObj = findSelectedColumnObject(selectedColumnNames[count]);
//check if regex is provided
if (!(columnObj[0].validationRegex == "")) {
// add a cell validator
var expression = new RegExp(columnObj[0].validationRegex);
regex[columnObj[0].name] = new RegExp(columnObj[0].validationRegex);
var valObj = GetValidatorObject(expression);
addCellValidator(columnObj[0].name, valObj);
}
}
function GetValidatorObject(regObj){
var obj = {
isValid: function (value) {
return value == "" || (regObj.test(value));
}
};
return new CellValidator(obj);
}
}
它抛出的例外是:
ReferenceError:未定义GetValidatorObject [var valObj = GetValidatorObject(表达);]
有什么想法吗?
答案 0 :(得分:0)
感谢epascarello
,解决方法很简单,我将GetValidatorObject
的方法移出了with (this)
的范围。现在它适用于FF。当我进一步深入研究此事时,我发现avoid using 'with' keyword in JS非常有趣。这可能会清除灰色区域。