2013-06-14 4 views
2

저는 EditableGrid과 협력하여 열 모델을 동적으로 생성하고 조작합니다. 모든 것은 파이어 폭스 (IE -_-가 아니라 ..yes)와의 단 하나의 호환성 문제를 제외하고는 계획대로 진행되었다. 아마도 이것이 일종의 클로저 문제 일 것 같습니까? 이 문제를 해결할 수있는 방법이 없습니다. 이것은 뭔가 잘못 곳이다 : 그것은 발생그리드가 파이어 폭스에서 렌더링되지 않습니다

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 is not defined [var valObj = GetValidatorObject(expression);]

어떤 아이디어?

+0

Nitpick, avoid with 'with'! 당신은 단지 그것을 사용함으로써 큰 ​​두통을 만들 것입니다. 그리고 내 추측은 그것이 당신이 잘못한 이유입니다. – epascarello

+0

나는 그것을 얻지 못한다, 왜 FF일까요? 그것은 다른 브라우저와 완벽하게 작동합니까? – faizanjehangir

+0

GetValidatorObject를'with (this)'의 범위 밖으로 옮겼을 때 작동합니다. – faizanjehangir

답변

0

epascarello 덕분에 간단히 작업 할 수 있었고 GetValidatorObject이라는 메서드를 with (this) 범위 밖으로 옮겼습니다. 이제 FF로 작동합니다. 문제가 더 깊어 지자 avoid using 'with' keyword in JS이 정말 흥미 롭습니다. 이렇게하면 회색 영역이 지워질 수 있습니다.