0

次の構文を使用して、1 つのページに 3 つのビュー モデル バインディングを関連付けています。

ko.applyBindings(new SomeViewModel(), document.getElementById("some-id-element"));

ページをテストするときにモデルの状態を監視するためにデータ ダンプを実行したいと考えています。複数のモデル ルートに進む前に、次の方法を使用して、ページの下部にあるページ モデル データを確認していました。

<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>

当然、$root コンテキストが特定の要素に移動されたので、$root だけを使用しても何も返されません。各ビューの特定のデータを表示できるように、各個別のビュー モデルをターゲットにする方法を理解するのに苦労しています。

新しいモデルをグローバル変数として割り当ててみました

testVar = new SomeViewModel();
ko.applyBindings(testVar, document.getElementById("some-id-element"));

そして、次の例を使用しました。

<pre data-bind="text: ko.toJSON(testVar, null, 2)"></pre>
<pre data-bind="text: ko.toJSON(testVar.$root, null, 2)"></pre>
<pre data-bind="text: ko.toJSON($element.some-id-element, null, 2)"></pre>

これらのテストでは何も返されません

ここでのスコープがはっきりと理解できないので、誰かが私に欠けているものについて教えてくれることを願っています.

ありがとうございました、

キャリー。

*綴りを編集しました。

4

3 に答える 3

1

デバッグフィールドをビューモデルの構成にバインドできます。

ko.applyBindings({vm1: vm1, vm2: vm2, vm3: vm3},
    document.getElementById("debug"));
<div id="debug">
    <pre data-bind="text: ko.toJSON(vm1, null, 2)"></pre>
    <pre data-bind="text: ko.toJSON(vm2, null, 2)"></pre>
    <pre data-bind="text: ko.toJSON(vm3, null, 2)"></pre>
</div>

http://jsfiddle.net/MizardX/jxM9f/

または、グローバル変数にアクセスできる必要があります。(それらが実際にグローバル変数であると仮定して)

http://jsfiddle.net/MizardX/2Y6DF/

于 2012-12-29T01:26:39.880 に答える
1

ko.toJSONメソッドを処理するヘルパー関数を作成することを好みます。次に、ヘルパーを呼び出すビューモデルにko.computedを配置します。このようにして、ビューモデルでko.computedをビューにバインドして表示できます。1つのビューに複数のビューモデルをバインドしている場合、標準のバインドを使用して、同じページにビューモデルごとに1つ表示できます。

<pre data-bind="text: debugInfo"></pre>
于 2012-12-29T15:03:34.023 に答える
0

構文は

<div data-bind="text: ko.toJSON($root)"></div>​

http://jsfiddle.net/photo_tom/eY9w8/9/の例を参照してください。いずれかの列をクリックすると、出力の変化を確認できます。

于 2012-12-29T00:37:45.223 に答える