ノックアウトコンポーネントとして私のビュー(html)と私のviewModel(js)を登録しました。私のメインファイル(index.html)では、コンポーネントをデータバインドしてさまざまなビューを表示します。この時点でko.toJSON($ data、null、2)でhtmlのviewModelを素早くデバッグしたいとき、デバッグしたいeverey htmlファイルにko.toJSONのdata-bindinを追加する必要があります。私はメインファイル(index-html)でのみko.toJSONをデータバインドし、viewModel/$ data?を渡すようなもっと一般的な方法を持っていますか?それに。ko.toJSONを使用してメインファイル内のコンポーネントをデバッグする|ノックアウト
0
A
答えて
0
デバッグ要素を含む最も簡単な方法は、コンポーネントを登録するときにテンプレートをラップすることです。
すでにvmとテンプレートを保持するinit
オブジェクトがあるため、登録する直前にtemplate
プロパティを再割り当てして、<pre>
html文字列を追加することができます。例えば
:
var appendDebugPre = function(htmlString) {
var pre = document.createElement("pre");
pre.setAttribute(
"data-bind",
"html: ko.toJS($data, null, 2)"
);
// Might be better to create a documentFragment,
// but for debug purposes, this might be enough
return htmlString + pre.outerHTML;
};
// Regular register:
var c = messageEditor();
ko.components.register(c.name, c.init);
// Register a debug version:
ko.components.register("debug-" + c.name,
Object.assign({}, c.init, {
template: appendDebugPre(c.init.template) // Here, we wrap the template
}));
ko.applyBindings({});
// Utils:
// From knockout docs, an example component:
function messageEditor() {
return {
name: 'message-editor',
init: {
viewModel: function(params) {
this.text = ko.observable(params && params.initialText || '');
},
template: 'Message: <input data-bind="value: text" /> ' +
'(length: <span data-bind="text: text().length"></span>)'
}
};
};
// Stub
ko.toJS = function(vm) {
return JSON.stringify(
Object.keys(vm).reduce(function(res, k) {
res[k] = ko.unwrap(vm[k]);
return res;
}, {}),
null,
2
);
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="component: 'message-editor'"></div>
<div data-bind="component: 'debug-message-editor'"></div>
関連する問題
- 1. ノックアウトを使用してループ内のドロップダウンイベントを取得する
- 2. Angular2コンポーネント内の変数をグローバル(デバッグ用)としてマーク
- 3. 変更メインファイルのメインファイルが</p> <p>を使用する
- 4. ノックアウトを使用してスライダーを作成
- 5. 角度で@inputを使用して別のコンポーネント内のコンポーネントをロードする
- 6. Rhinoを使用してEclipse内でJavascriptをデバッグする
- 7. MagicMockを使用してメソッドの内部コンポーネントをテストする
- 8. カスタムコンポーネントをReact内のコンポーネントの子として使用する
- 9. ノックアウトを使用して入力する「ステップ」をバインドする
- 10. コンポーネント内のモデルを使用する
- 11. メインファイル内にJavaクラスを作成していますか?
- 12. ko.toJSONはフィールドを無視しているようです
- 13. ノックアウトを使用してセレクタにイベントをバインドする
- 14. ノックアウト計算機能を使用してテキストを更新する
- 15. windbgを使用してデバッグするタイミング
- 16. VueJsコンポーネント内でRazorを使用する
- 17. テーブル内でバインドする場合のノックアウトの使用
- 18. タイプスクリプト内のスタイル付きコンポーネントのデバッグ
- 19. ノックアウトjsを使用したマップのオートコンプリート
- 20. 角2:モジュール内のコンポーネントをエクスポートし、モジュール内でインポートして使用します。
- 21. Chrome Consoleを使用してRequireJSでノックアウトViewModelにアクセスする
- 22. ノックアウトJS - 表に列ヘッダーを使用してソートするには、
- 23. ノックアウトを使用して配列要素を値としてデータバインド
- 24. react-keydownを使用して内部コンポーネントのkeydownイベントをキャッチ
- 25. ノックアウトを使用してリストをフィルタリングしてリストを作成する
- 26. MVCパターンを使用してJoomlaコンポーネントのワークフロー内のバリデーション
- 27. EclipseのデバッグEclipseを使用したデバッグ
- 28. ノックアウトとRequireJSを使用したカスタムバインディングハンドラ
- 29. ノックアウトjsを使用したファイルアップロード
- 30. ノックアウトを使用したHTMLヘルパー