【问题标题】:How do I clear form fields using knockout js?如何使用淘汰赛 js 清除表单字段?
【发布时间】:2023-04-03 11:50:01
【问题描述】:

从表单中保存数据后,我想清除字段。我正在使用淘汰赛 js 将表单字段绑定到模型。清除表单字段的最佳方法是什么?

【问题讨论】:

    标签: knockout.js


    【解决方案1】:
    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 插件。也许它会帮助您更轻松地完成它。

    【讨论】:

    • 那你必须手动完成。检查我在回答中为您创建的小提琴。
    【解决方案2】:

    您可以通过这种方式在可观察对象中使用子模型,然后 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>
    

    演示:http://jsfiddle.net/qb5k9bbn/

    【讨论】:

    • 请记住,with 绑定会在任何 formModel 值更改时重新创建它控制的 DOM 片段。如果您使用一些需要 JS 初始化的自定义 UI 逻辑(在被替换的 DOM 下),您可能希望在 formModel 更改时重新初始化该 UI 逻辑
    猜你喜欢
    • 2012-08-31
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2013-02-09
    • 2012-01-30
    • 2016-03-15
    • 2014-10-13
    相关资源
    最近更新 更多