LoginSignup
14

More than 5 years have passed since last update.

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

Posted at

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とかはしない。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14