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>

我的过滤器集合正确填充了必要的元素。我正在努力的地方是我试图使用另一个可观察集合(iqReports)填充选择元素的第一个单元格。当我运行页面时,firebug 没有报告任何错误,但元素为空。

来自 Firebug 的 HTML:

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

我意识到尝试以这种方式绑定是有问题的,因为将选择元素移到工作之外。

谁能提供一些关于如何设置这种类型的绑定的见解?

更新:这是一个部分小提琴,显示了在创建过滤器和报告对象时使用的标记http://jsfiddle.net/rlcrews/e7z93/

-干杯

4

1 回答 1

0

我在您的视图模型中没有看到 iqReports 对象或可观察的只有 iqReport。更改您的 html 以反映 iqReport 并查看是否整理它我无法从您的小提琴中看出...

作为记录,当我在 Knockout 中级联下拉列表时,我根据第一个列表将第二个列表设为可观察的 -

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 回答