0

基本的にカテゴリのリストを含むjsonデータからマッピングしているモデルがあり、各カテゴリ内にはコントロールのリストがあります...したがって、UIには、カテゴリのリストと、ユーザーがクリックすると、カテゴリ全体が(ロード時に)空の監視対象にプッシュされ、別のパネルでレンダリングされます...クリック機能は機能しているようですが、foreachステートメントを使用して2番目の列に何もレンダリングされていません。どんな助けでもいただければ幸いです。私のjsonデータは少し長いので、ここで私のフィドルを参照するのが最善かもしれません:

http://jsfiddle.net/TU3ps/4/

しかし、これが私が子供を説得しようとしている方法です、私の構文はここで悪いですか?

        <div class="left">Click any of the below categories to see its controls...
            <ul data-bind="foreach:  Categories">
                <li data-bind="click:  $parent.catClick"> 
                    <span data-bind="text:  Text"></span>
                </li>
            </ul>
        </div>
        <div class="right">Controls within the category clicked...
            <ul data-bind="foreach:  Curr.Ranges">
                <li>
                    <span data-bind="text:  FieldName" />
                </li>
            </ul>
        </div>

これを行うためのより良い方法はありますか?基本的に、右側のパネルに一度に1つのコレクションのみを表示したいと思います。私が今やろうとしているのは、フィールド名を表示することだけですが、何も表示されていません。どんな助けでも大歓迎です....

4

1 に答える 1

1

Curr を observableArray ではなく、observable にしたいように見えますが、正しく割り当てていません。

viewModel.Curr = ko.observable();
// Inside your click method
viewModel.Curr(category);

Ranges のダミー プロパティも追加する必要があります。そうしないと、最初の applyBindings でノックアウトが発生します。

viewModel.Curr = ko.observable({ Ranges: [] });
于 2013-03-19T14:20:57.883 に答える