Javascript 使用零部件时,“拼接”错误地删除了最后一项

Javascript 使用零部件时,“拼接”错误地删除了最后一项,javascript,rivets.js,Javascript,Rivets.js,我正在使用Rivets.js在rv each-*块中绘制一些组件 当页面加载时,它们都呈现良好。 当我拼接模型的第一个图元时,模型会正确删除第一个图元,但rv each-*块会删除最后一个图元 组件只是由一个按钮组成,该按钮包含它绑定到的对象值的文本。在每个组件调用旁边,我打印一些也绑定到每个对象值的文本。这两者应该是相同的,但在拼接之后它们就不同了 var model2 = [{ "value":"1"},{"value":"2"},{"value":"3"}]; rivets.compon

我正在使用Rivets.js在rv each-*块中绘制一些组件

当页面加载时,它们都呈现良好。 当我拼接模型的第一个图元时,模型会正确删除第一个图元,但rv each-*块会删除最后一个图元

组件只是由一个按钮组成,该按钮包含它绑定到的对象值的文本。在每个组件调用旁边,我打印一些也绑定到每个对象值的文本。这两者应该是相同的,但在拼接之后它们就不同了

var model2 = [{ "value":"1"},{"value":"2"},{"value":"3"}];

rivets.components['control'] = {
    template: function() {
        return '<button>{data.option.value}</button>';
    },
    initialize: function(el, attributes) {
        return new controlviewmodel(attributes);
    }
};

function doSplice()
{
    model2.splice(0,1);
}

<table id="view">
<tr rv-each-option="model">
    <td>
        <control option="option"/>
    </td>
    <td>{option.value}</td>
</tr>
</table>

返回属性

是否可能是
控制视图模型
中的
数据
模型2
的副本,而不是引用?问题似乎在于初始化,新的控制视图模型(属性)为要绑定的对象创建了一个新模型,但当原始模型更改时,该引用不会更新。此示例可以通过替换“返回新的controlviewmodel(属性);”来修复具有“返回属性;”这是否与相关?是否
controlviewmodel
中的
this.data
model2
的副本,而不是参考?问题似乎出现在初始化的新controlviewmodel(属性)中为要绑定到的此对象创建新模型,但在更改原始模型时该引用不会更新。此示例可以通过替换“返回新的controlviewmodel(属性);”来修复具有“返回属性;”这可能与什么有关?
return new controlviewmodel(attributes);