Html 在foreach中删除克隆整个项目

Html 在foreach中删除克隆整个项目,html,knockout.js,Html,Knockout.js,我试图在单击按钮时克隆元素。我试图使用ko.toJS。在页面加载时,它可以正常工作,但是当我想要克隆项目时,它无法绑定项目(例如,值、文本等) 以下是HTML: <div class="stockItems-inner" data-bind="foreach: StockItems"> <div data-bind="if: Type=='Input'"> <div class="stock_container_input">

我试图在单击按钮时克隆元素。我试图使用
ko.toJS
。在页面加载时,它可以正常工作,但是当我想要克隆项目时,它无法绑定项目(例如,值、文本等)

以下是HTML:

<div class="stockItems-inner" data-bind="foreach: StockItems">
    <div data-bind="if: Type=='Input'">
        <div class="stock_container_input">
            <input type="text" data-bind="value: Value" />
        </div>
     </div>
     <div data-bind="if: Type=='Radio'">
        <div class="stock_container_control">
        <div data-bind="foreach: Options">
            <div class="stockLbl">
               <input type="radio" data-bind="text: Text, checked:$parent.Value, attr:{'id':Id, 'name': $parent.Text, 'value': Value}" />
               <label data-bind="attr:{'for':Id}, text: Text"></label>
            </div>
        </div>
       </div>
    </div>
</div>
<div class="addItem">
    <button type="button" data-bind="click: CloneItem"><img src="images/add.png" alt="" /></button>
</div>

单击按钮时,会引发错误:
无法处理绑定
。我正在使用JSON数据进行绑定。

不太清楚在没有工作代码的情况下您想要什么样的最终结果,但听起来您想克隆数组中的最后一项并添加到数组中

如果是这样,我认为您有一个错误-您的add button click绑定将永远不会向您定义的函数传递任何内容,因为它在foreach之外。你需要这样的东西:

this.CloneItem = function() {
    var toClone = self.StockItems()[self.StockItems().length - 1]
    self.StockItems.push(toClone);
};
下面是一个没有单选按钮等的简化示例:


是否定义了选项?:json中定义了“是”选项。在选项中,只有我定义了所有单选按钮数据。它在页面加载时工作正常,但是当我想克隆相同的数据时,如果:function(){return Type=='Input'}“Message:Type未定义”,它会抛出一个错误“无法处理绑定”。也许可以做一个JSFIDLE并查看一下。我已经在HTML部分编辑了somthig,请查看这里。单击按钮时,将克隆上述元素(输入类型和单选按钮)。
this.CloneItem = function() {
    var toClone = self.StockItems()[self.StockItems().length - 1]
    self.StockItems.push(toClone);
};