문제

DashCode에서 프로젝트를 만들고 목록 컨트롤을 삽입하고 동적 목록을 활성화하고 JSON 객체를 생성하여 컨트롤과 연관 시켰습니다. 코드는 다음과 같습니다 ...

var stations = {

    _rowData: ["Mitchelton", "Gaythorne", "Albion", "Central", 
    "Burpengary", "Petrie", "Morayfield", "Caboolture", "Ferny Grove"],

    numberOfRows: function() { return this._rowData.length; },

    prepareRow: function(rowElement, rowIndex, templateElements) {
        if (templateElements.label) {
            templateElements.label.innerText = this._rowData[rowIndex];
        }
        rowElement.onclick = function(event) { alert("Row "+rowIndex); };
    }

항목이 선택된 시점을 보시다시피 RowIndex를 인쇄하지만 해당 색인에 실제 값을 표시하고 싶습니다.

불행히도 이것은 (예를 들어) "this._rowdata [2]는 작동하지 않으며 "_rowdata"객체를 찾을 수없는 것 같습니다.

도움이 되었습니까?

해결책

이것은 작동해야합니다 :

prepareRow: function(rowElement, rowIndex, templateElements) {
    if (templateElements.label) {
        templateElements.label.innerText = this._rowData[rowIndex];
    }

    var _this = this;
    rowElement.onclick = function(event) { alert(_this._rowData[2]); };
}

문제는 rowElement.onclick 이벤트 핸들러, this DOM 요소를 나타냅니다 rowElement, 당신이 아닙니다 stations 물체. 변수를 만들어 문제를 해결합니다 (나는 이름을지었습니다. _this, 그러나 당신은 당신이 원하는 것을 부를 수 있습니다) stations 객체를 한 다음 액세스 할 때 마다이 변수를 사용합니다. stations 이벤트 핸들러 내부의 객체.

자세한 내용은 다음 두 기사를 참조하십시오. this 예어:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top