質問
ダッシュコードでプロジェクトを作成し、リスト コントロールを挿入し、動的リストを有効にし、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
イベントハンドラー内のオブジェクト。
詳細については、次の 2 つの記事を参照してください。 this
キーワード:
所属していません StackOverflow