プッシュしているのはリスト内のオブジェクトの値であり、キーは増分整数値として内部的に割り当てられます。base.js
プロジェクトのJavaScript1.0リファレンス用のWindowsライブラリを開いてみると、次の実装が表示されpush
ます。
の呼び出しに注意してくださいthis._assignKey()
。この値は、oniteminsertedハンドラーで返されます
push: function (value) {
/// <signature helpKeyword="WinJS.Binding.List.push">
/// <summary locid="WinJS.Binding.List.push">
/// Appends new element(s) to a list, and returns the new length of the list.
/// </summary>
/// <param name="value" type="Object" parameterArray="true" locid="WinJS.Binding.List.push_p:value">The element to insert at the end of the list.</param>
/// <returns type="Number" integer="true" locid="WinJS.Binding.List.push_returnValue">The new length of the list.</returns>
/// </signature>
this._initializeKeys();
var length = arguments.length;
for (var i = 0; i < length; i++) {
var item = arguments[i];
if (this._binding) {
item = WinJS.Binding.as(item);
}
var key = this._assignKey();
this._keys.push(key);
if (this._data) {
this._modifyingData++;
try {
this._data.push(arguments[i])
} finally {
this._modifyingData--;
}
}
this._keyMap[key] = { handle: key, key: key, data: item };
this._notifyItemInserted(key, this._keys.length - 1, item);
}
return this.length;
},
したがって、コードに以下を追加すると、後で使用できる値が得られます(プッシュした「キー」に関連付けると仮定します)。
testList.oniteminserted = function (e) {
var newKey = e.detail.key;
};