2012-09-14 16 views
6

私はKOのフレームワークが好きですが、デバッグは時々私にとっては悪夢です。通常のjavascriptコードの場合は、ブレークポイントを設定し、実行時にそこに行って何が間違っているかを確認できますが、ノックアウト式をデバッグするにはどうすればいいですか?ほとんどの場合、バインディングエラーはシンボルや誤った構文が欠落した結果であり、ノックアウトでは問題に関する明確なエラーが表示されることがありますが、時にはページに表示されないデータや「バインディング式が間違っています」、 「機能abcが見つかりません」などのメッセージでも、私のモデルKOランタイムのレベルが現時点でどのようになっているのかわからないので、何が間違っているのかをすぐに理解することはできません。理想的には、KO式にブレークポイントや何かを入れるブラウザプラグインがあり、実行時に実行されているコンテキストを参照する必要があります。このようなことは市場に出ているのか、それとも期待されていますか?どのようなアイデアデバッグプロセスの改善に関する?knockout.jsバインディング式をどのようにデバッグしますか?

+4

いくつかの提案:ここであなたの現在のコンテキストを見る方法を見てみましょう:http://stackoverflow.com/questions/9261296/any-good-techniques-to-debug-template-binding-faults-for-ノックアウト - js。また、本当にバインディング式をマークアップから外したい場合は、このプロジェクトを見てください:https://github.com/rniemeyer/knockout-classBindingProvider –

+0

ありがとうございました。同じ質問が返されました – YMC

+0

小さなデバッグ用のbindingHandlerを使用します:http://stackoverflow.com/a/16242988/647845 –

答えて

10

開発中に、私はデバッグバージョンを使用し、関数createBindingsStringEvaluator()(v2.1.0の1858行目)でブレークポイントを設定しました。バインディングが "解析"される直前に、評価される式を分析し、どのバインディングが失敗し、そのコンテキストがわかり、バインディングプロセスを進めて失敗するまで歩き回ることができます。

非常に複雑なバインディングの問題を最小限に抑えるため、特に繰り返しが必要な場合は、一度にバインディングセットを適用できるカスタムバインディングハンドラを作成することを検討します。

+0

バインディングがすべて失敗し、スクリプトエラーが発生しなかった場合はどうしますか? – Nikos

+2

あなたの持つ「失敗」の種類によって異なります。複数のバインディングで発生した場合は、一度に1つずつ問題を処理します。すべてがあなたが期待しているものであることを確認することによって、なぜそれが失敗したかを理解する。 –

+0

cool thanks !!!! – Nikos

0

現在のバージョン(v3.4.1)では、この関数はparseBindingsStringと呼ばれています。 debuggerまたはconsole.logを設定すると、いくつかの情報が表示されます。

関連する問題