Javascript 取消/取消ractive中的输入,尽管存在双向绑定

Javascript 取消/取消ractive中的输入,尽管存在双向绑定,javascript,ractivejs,Javascript,Ractivejs,我正在尝试在ractive中使用几个输入字段进行数据操作。在简化版本中,它基本上是: new Ractive({ el: '#myID', template: DataTpl, magic: true, modifyArrays: true, data: {myJSON}, save: function (id) { //some code to save my Data to CouchDB } const DataTp

我正在尝试在ractive中使用几个
输入
字段进行数据操作。在简化版本中,它基本上是:

new Ractive({
    el: '#myID',
    template: DataTpl,
    magic: true,
    modifyArrays: true,
    data: {myJSON},
    save: function (id) {
        //some code to save my Data to CouchDB
    }

const DataTpl = '{{#myJSON}}<input value="{{aValue}}">'+
'<button on-click="@this.save(_id)">Save</button>'+
'<button>Cancel</button>{{/myJSON}}';
new-Ractive({
el:“#myID”,
模板:DataTpl,
魔法:真的,
ModifyArray:对,
数据:{myJSON},
保存:函数(id){
//一些将我的数据保存到CouchDB的代码
}
const DataTpl='{{#myJSON}}'+
“保存”+
'取消{{/myJSON}}';
编辑和保存效果很好,但取消按钮(用于取消任何用户输入)无法按预期运行。当我单击取消时,绑定已更改了我的
数据
。因此它不会存储到数据库中,但我无法恢复到原始值,因此在重新加载之前,它在UI中显示错误

我还尝试了
lazy:true
选项,但没有任何区别(我认为,因为点击取消按钮会触发
change
事件)

我还尝试了
lazy:true
选项,但没有任何区别

不做您认为它会做的事情。默认情况下(
false
),它会在更改时更新模型。但是如果
true
,它会在您解除输入焦点时更新模型。它仍在执行双向绑定

您可以做的是设置为
false
。然后单击保存,调用将数据从输入推送到模型。这将更新模型,而不考虑
双向
配置。对于取消,您无需执行任何操作

new-Ractive({
el:‘身体’,
双向:错误,
模板:`
{{message}}
拯救
`,
数据:{
消息:“”
}
});

mousedown而不是click?这是一个有趣的想法,但结果是一样的。所以不要使用双向绑定这当然是一个选项,但双向绑定对脚本的其他部分非常有用(例如在我的保存事件中获取实际更改的数据)。因此,我希望出现任何其他想法。避免取消不是一个选项。实际上,每一行都有一个编辑按钮,该按钮将对应行的所有输入字段设置为
disabled=false
,并显示最初隐藏的保存和取消按钮。点击取消后,我希望对输入字段所做的任何更改都被删除驳回,行恢复到其原始状态。因此,也许我应该尝试使用第二个键路径来存储原始值并在取消时将其复制回…我发现这不是非常优雅,但非常实用的解决方法:如果我附加
ractive.unender();ractive.render('#myID'));
对于“取消”按钮,表格将从未更改的数据中重新绘制,任何用户输入都将被还原。@Torf Yep。我在编辑和添加复制选项时保留了该选项。:D