自动生成多个输入字段

时间:2014-02-20 15:27:51

标签: knockout.js

当我在选择列表中选择数字时,我想自动生成多个场对。

每对都会将值绑定到模型,而模型又存储在数组中。

我创建了一个non-working fiddle。谁能告诉我我做错了什么?

<div class="editor-label">
    <label><b>No of double fields to create</b>

    </label>
</div>
<div class="editor-field">
    <select data-bind="options: numberOfFields, value: selectedNumberOfFields, optionsCaption: 'Choose Number'"></select>
</div>

<br><br>

<div data-bind="visible: showFields()">
    <div data-bind="foreach: parameters">
        <label>Param:
            <input data-bind="value: param" />
        </label>
        <label>Operator:
            <input data-bind="value: operator" />
        </label>
    </div>
</div>

JSFiddle

1 个答案:

答案 0 :(得分:3)

以下是您正在寻找的想法

http://jsfiddle.net/Mwe2B/4/

我所做的是修复Parameters中的拼写错误然后我删除了selectedNumberOfFields的订阅,而是使用ko.computed代替showFields

self.showFields = ko.computed(function() {
    var fields = [];
    for (var i = 0; i < self.selectedNumberOfFields(); i++) {
        fields.push(new Parameter());
    }
    return fields;
});

你的绑定现在看起来像这样:

<div data-bind="foreach: showFields">
    <div>
        <label>Param:
            <input data-bind="value: param" />
        </label>
        <label>Operator:
            <input data-bind="value: operator" />
        </label>
    </div>
</div>