Posted at

KnockoutjsでDOM要素にバインドされてるViewModelを取得する

More than 3 years have passed since last update.

KnockoutjsのViewModelとかデバッグ中に参照したくなるわけですが、

たいていconsoleとかからはインスタンスの変数はどっかのスコープで隠れてて見えない。

でも、なんとかしたい。そんな時。


contextFor

ko.contextFor(<element>)

で、バインドされてるcontextが取れる。


$root

ko.contextFor(<element>).$root

すれば、applyBindingに渡したViewModelが取れる。


chromeでデバッグ中に便利な$0

devツールでelementを選択している状態で、

consoleで $0 だけ打ってみるとそのDOM要素の参照が取得できる。

なので、デバッグ中は

ko.contextFor($0).$root

こうしてViewModelを取ると楽。


contextForを知るまで

debug版使ってる時は

ko.storedBindingContextForNode(<element>)で取れてた。

min にした時は

var vm = new ViewModel();

window.vm = vm;

をデバッグ時だけ埋め込んでた。

もちろんcommitとかはしない。