Kendo ui 剑道ui表单更新取消按钮
我正在尝试一个简单的剑道界面形式与'保存'和'取消'按钮。我正在使用Kendo.Observable将数据绑定到表单。 我试图实现的功能是,如果单击“保存”按钮,表单数据将被保存。否则,如果单击“取消”,表单将返回到只读模式,并显示以前的数据。为此,我首先在单击“更新”按钮时将模型数据保存在“originalvalue”属性中。如果单击“取消”,则“字段”模型数据将恢复为“原始值”。但问题是,“originalvalue”不包含原始值。当用户在“保存”过程中进行编辑时,它会得到更新。 问题是-如何保留原始模型数据以便在取消时刷新? 请找到下面的代码。谢谢你的帮助,谢谢Kendo ui 剑道ui表单更新取消按钮,kendo-ui,kendo-mvvm,Kendo Ui,Kendo Mvvm,我正在尝试一个简单的剑道界面形式与'保存'和'取消'按钮。我正在使用Kendo.Observable将数据绑定到表单。 我试图实现的功能是,如果单击“保存”按钮,表单数据将被保存。否则,如果单击“取消”,表单将返回到只读模式,并显示以前的数据。为此,我首先在单击“更新”按钮时将模型数据保存在“originalvalue”属性中。如果单击“取消”,则“字段”模型数据将恢复为“原始值”。但问题是,“originalvalue”不包含原始值。当用户在“保存”过程中进行编辑时,它会得到更新。 问题是-如
<script type="text/javascript">
var viewModel = kendo.observable ({
updated: false,
originalvalue: {},
update: function(e) {
var original = this.get("fields");
this.set("originalvalue", original);
this.set("updated", true);
},
save: function(e) {
e.preventDefault();
if (validator.validate()) {
// make an ajax call to save this data
this.set("updated", false);
}
},
cancel: function(e) {
var original = this.get("originalvalue");
validator.destroy();
this.set("fields", original);
this.set("updated", false);
},
fields: {}
});
viewModel.set("fields", formArray);
kendo.bind($("#outerForm"), viewModel);
// prepare the validator
var validator = $("#outerForm").kendoValidator().data("kendoValidator");
var viewModel=kendo.observable({
更新:错,
原始值:{},
更新:职能(e){
var original=this.get(“字段”);
本套(“原始值”,原件);
此.set(“已更新”,true);
},
保存:功能(e){
e、 预防默认值();
if(validator.validate()){
//进行ajax调用以保存此数据
此.set(“已更新”,false);
}
},
取消:功能(e){
var original=此.get(“原始值”);
destroy();
本.集(“字段”,原件);
此.set(“已更新”,false);
},
字段:{}
});
viewModel.set(“字段”,formArray);
bind($(“#outerForm”),viewModel);
//准备验证器
var validator=$(“#outerForm”).kendoValidator().data(“kendoValidator”);
我必须在我目前正在开发的表单上制作准确的东西。我正在为数据使用DataSource对象,因此必须使用cancelChange() 我在那里做的事情: 1.我创建了一个具有模式的数据源:
... schema: {
model: {id: "id"}}
...
二,。我使用映射id获取了正在编辑的对象:
clientDataSource.cancelChanges(clientDataSource.get(this.get("contactID")));
其中ContactID是在我已传递ID的setData函数中创建的:
this.set("contactID", contactID);
正如我可能已经注意到并理解的,这里还有另一个问题,您没有使用数据源,而是使用字段的数据?
这里的问题是,您的原始值位于可观察对象内部,它引用了变量original,因此它具有可观察属性。您应该在可观察对象之外定义变量原始值:
var originalValue;
var viewModel = kendo.observable ({ ...
您还应将formArray发送到该变量,以便在加载可观察对象之前,您将获得默认加载,例如:
originalValue = formArray;
viewModel.set("fields", formArray);
因此,当您需要取消时,您应该:
cancel: function(e) {
var original = originalValue;
validator.destroy();
this.set("fields", original);
this.set("updated", false);
},
我还没有测试过它,但它应该为您提供一些解决该问题的指导