0

ページには次の表があります

        <table>
            <tbody data-bind="foreach: myfilters">
                <tr>
                    <td data-bind="with: $root.iqReports">
                        <select data-bind="options: SelectedAttributes(), optionsText: function(SelectedAttributes){ return SelectedAttributes.NameHierarchy() + '.' + SelectedAttributes.LabelName() },  optionsCaption:'Select a Field...'"></select>  
                    </td>
                    <td>
                        <select data-bind="options: $root.filterOperators, value:operator, optionsText: 'operatorName'">
                        </select>
                    </td>
                    <td>
                        <input data-bind="value: criteria1" />
                    </td>
                    <td>
                        <input data-bind="value: criteria2" />
                    </td>
                    <td>
                        <select data-bind="options: $root.joinOperators, value:joinOperator, optionsText: 'joinName'">
                        </select>
                    </td>
                    <td>
                        <a class="attributeLink" data-bind="click: $root.removeFilter">Remove</a>
                    </td>
                </tr>
            </tbody>
        </table>

コレクション my フィルターは、必要な要素を正しく設定します。私が苦労しているのは、別の監視可能なコレクション (iqReports) を使用して選択要素を入力しようとしている最初のセルです。ページを実行すると、firebug はエラーを報告しませんが、要素は空です。

Firebug からの HTML:

<td data-bind="with: $root.iqReports"></td>

select要素を外に移動してもうまくいくので、この方法でバインドしようとすると何か問題があることに気付きました。

このタイプのバインディングをセットアップする方法について、誰かが洞察を提供できますか?

更新: これは、フィルターとレポート オブジェクトの作成に使用されるマークアップを示す部分的なフィドルですhttp://jsfiddle.net/rlcrews/e7z93/

-乾杯

4

1 に答える 1

0

iqReports オブジェクトが表示されないか、ビュー モデルに iqReport のみが表示されます。iqReport を反映するように html を変更し、それが整頓されているかどうかを確認してください。フィドルからはわかりません...

そして、記録のために、ノックアウトでドロップダウンをカスケードしているとき、最初のリストに基づいて2番目のリストをオブザーバブルにします-

var self.firstList = ko.observableArray(objects);
var self.firstListSelected = ko.observable(null);

var self.secondList = ko.computed(function () {
    var list = ko.observableArray();
    if (self.firstListSelected() == null) { return list(null); }
    list(getDependentObjectsSomehow());
}
于 2013-05-17T16:44:22.263 に答える