我在淘汰中动态创建选择,如下所示:
<h5 data-bind="visible: selectedChildren() > 0">@Model.SelectChildrenAge</h5>
<input type="hidden" name="ac1" data-bind="value: selectedChildrenAgesCsv()"/>
<div class="children-age-container__ages" data-bind="foreach: childrenAges">
<select class="children-age-container__ages--select" data-bind="options: $data, optionsCaption: 'Age', value: $parent.selectedChildrenAges[$index]"></select>
</div>
在我的模型中,我希望动态创建的选择值绑定到一个ObservableArray:
selectedChildrenAges: KnockoutObservableArray<number> = ko.observableArray([
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
]);
然而,似乎它们总是0,即使选择的实际创建工作像一个魅力。这里的问题是,我实际上不想发布选择框中的内容,因为后端系统要求我将其作为csv字符串发布。我所做的是创建一个订阅方法,该方法将更新
selectedChildrenAgesCsv
因此:
this.selectedChildrenAges.subscribe(() => {
console.log((this.selectedChildrenAges as any).join(", "));
this.selectedChildrenAgesCsv((this.selectedChildrenAges as any).filter(age => age > 0).join(","));
我的控制台日志从来没有在这里输出任何东西,我有点迷失在如何面对它。我试过这么多不同的方法,但似乎没什么好用的。