题
我已经创建了一个项目在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,但我想显示的实际价值在于,指数。
不幸的是,这种(例如)"这个。_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