2016-03-25 15 views
3

私はChromeデバッガを使用してオブザーバブルを検査しようとしています。ノックアウトプラグインを使用していますが、興味のあるオブザーバに関する情報が表示されていません。私が使用していた回避策は、オブザーバブルをグローバルウィンドウオブジェクトに設定し、コンソールで検査することです。これはいくつかの理由から時間がかかる。Chromeデバッガを使用してノックアウト観測値を検査する方法はありますか?

+1

おそらくhttps://chrome.google.com/webstore/detail/knockoutjs-context-debugg/oddcpmchholgcjgjdnfjmildmlielhof?hl=ja? https://www.safaribooksonline.com/blog/2014/02/26/debugging-bindings-knockout-3-0/ –

+2

本当にうまくいくもの:HTML要素を右クリックして_inspect要素_を選択し、go devツールコンソールに 'ko.dataFor($ 0)'や 'ko.contextFor($ 0)'と入力してください。コンソールは現在のバインディングデータ/コンテキストをログに記録します。 – user3297291

+0

これらのオブザーバブルはHTML要素にバインドされていません –

答えて

0

ノンミニファイノックアウトライブラリを使用している場合は、計算されていない各観測値に公開されている_latestValue変数を調べることができます。 computedの場合、computedに公開されているstate変数に露出した_latestValueという変数があります。

要約すると、デバッグ(別名非拡張)ビルドknockoutを参照している場合は、これらの変数によって観測値を検査できます。

var observable = ko.observable(); 
var computed = ko.computed(...); 
... 
observable._latestValue; 
computed._state.latestValue; 

編集:私はあなたが最新のノックアウト(バージョン> = 3.4.1)を使用している場合は、それが露出してしまったとして、あなたが直接、あまりにもcomputed._latestValueを使用することができ、computed用ケースを固定しますが、注意してきましたobservableの場合と同じです。

+0

私は 'computed'の場合に間違いがありました。正しくは' computed.state._latestValue'の代わりに 'computed._state.latestValue'です。 –

1

私が問題を理解していれば(一般にデバッガを使用して変数を検査するのではなく、代わりにコードconsole.debugを使用します)、オブザーバブルの値は表示されませんデータ値のみを検査することができます。

観測値をコピーする関数を使用してオブザーバブルを購読することで、値を保持することができます。観測所自体に便利な場所が付いています。あなたはそれを点検したい場合には、観察可能なを見つけ、そのinternalValueプロパティを見て

function debugObservable(value) { 
    var self = ko.observable(); 

    self.subscribe(function (newValue) { 
     self.internalValue = newValue; 
    }); 
    self(value); 
    return self; 
} 

:ちょうど観察可能な新しい種類を作成します。

+0

拡張されていない 'knockout'ライブラリを使用している場合は、' observable'で定義された '_latestValue'変数を調べることができますが、' computed'ではは確認できません。後者では 'state'変数IIRCの中にそれがあります。 –

関連する問題