使用页面我有下表
<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>
我意识到尝试以这种方式绑定有问题,因为将select元素移到了工作之外。
任何人都可以提供一些有关如何设置此类绑定的见解吗?
更新:这是一个部分小提琴,显示了在创建过滤器和报表对象时使用的标记http://jsfiddle.net/rlcrews/e7z93/
-cheers
答案 0 :(得分:0)
我没有在视图模型中看到iqReports对象或observable只有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());
}