Knockout.jsのko.dataForとko.contextForの使い道

よくわかってなかったのだけど、ko.dataForko.contextForの使い道が理解できたのでメモ。

$('#link').on('click', function(event) {
  console.log(ko.dataFor(this));
  console.log(ko.contextFor(this));
});

もしくは

link.addEventListener('click', function(event) {
  console.log(ko.dataFor(this));
  console.log(ko.contextFor(this));
});

のような使い方をする。

Knockout.jsでバインドしていないハンドラからKnockout.jsが持っているコンテキストなどを取得する際に、 thisを渡すことで取得できるみたいだ。

ほとんどはKnockout.js側でイベントハンドラなどもバインドすると思うのだけど、例外的な場合に取得できるようにしてあるんだろうか。