2

KnockoutJS を使用してビューをバインドするために、かなり複雑なモデルを構成しようとしています。

問題のマークアップ セクションは次のとおりです。

<input type="text" data-bind="visible: dialogSelectedCode.HasValue, value: dialogSelectedCodeValue"/>
<span data-bind="text: ko.toJSON(dialogSelectedCode)"></span>

入力要素は表示されませんが、私の「デバッグ」スパンにはコンテンツが表示されます

{"Code":"{intInc_G}","HasValue":true}

「決定」データがJSONオブジェクト内に隠されている場合、入力の可視をバインドする正しい方法は何ですか?

更新: これはかなり複雑な問題のフィドルです。問題のダイアログに到達するには、フィドルを実行し、[ブロックの追加] をクリックして、ドロップダウン入力でいくつかの項目を選択してみてください (特に最初と 2 番目の項目 -dialogSelectedCode変数が実際に更新されていることが明確に示されているため)。

4

1 に答える 1

2

HasValue プロパティの計算を作成する必要があると思います。あなたのバインディングdialogSelectedCode.HasValueはオブザーバブルに従わず、オブザーバブル関数の HasValue をチェックします。プロパティの方法dialogSelectedCode().HasValueはエラーをスローします。計算可能なものを作成し、テストを実行させます:

self.dialogSelectedCodeHasValue = ko.computed(function() {
    var selectedCode  = ko.utils.unwrapObservable(self.dialogSelectedCode);
    return selectedCode && selectedCode.HasValue;
});
于 2012-07-31T22:25:47.560 に答える