문제
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
예어:
제휴하지 않습니다 StackOverflow