【发布时间】:2023-04-03 11:50:01
【问题描述】:
从表单中保存数据后,我想清除字段。我正在使用淘汰赛 js 将表单字段绑定到模型。清除表单字段的最佳方法是什么?
【问题讨论】:
标签: knockout.js
从表单中保存数据后,我想清除字段。我正在使用淘汰赛 js 将表单字段绑定到模型。清除表单字段的最佳方法是什么?
【问题讨论】:
标签: knockout.js
function BookViewModel(title, author, pages) {
var self = this;
self.title = ko.observable(title);
self.author = ko.observable(author);
self.pages = ko.observable(pages);
self.reset = function() {
self.title(null);
self.author(null);
self.pages(null);
}
}
var viewModel = new BookViewModel("Windows Presentation Foundation 4.5 - Einführung und Praxis", "Norbert Eder", 400);
ko.applyBindings(viewModel);
查看fiddle
您也可以查看mapping.js 插件。也许它会帮助您更轻松地完成它。
【讨论】:
您可以通过这种方式在可观察对象中使用子模型,然后 clear 只会将值更改为新对象:
Javascript:
var ViewModel = function () {
var self = this;
self.formModel = ko.observable(new FormModel());
self.clear = function () {
self.formModel(new FormModel());
}
};
var FormModel = function () {
var self = this;
self.firstName = ko.observable();
self.surname = ko.observable();
}
ko.applyBindings(new ViewModel());
HTML:
<form data-bind="with: formModel">
First Name: <input type="text" data-bind="value: firstName"/>
Surame: <input type="text" data-bind="value: surname"/>
<button data-bind="click: $parent.clear">Clear</button>
</form>
【讨论】:
with 绑定会在任何 formModel 值更改时重新创建它控制的 DOM 片段。如果您使用一些需要 JS 初始化的自定义 UI 逻辑(在被替换的 DOM 下),您可能希望在 formModel 更改时重新初始化该 UI 逻辑