为啥重置表单不会清除绑定的模型属性

     2023-02-24     280

关键词:

【中文标题】为啥重置表单不会清除绑定的模型属性【英文标题】:Why resetting a form does not clear the bound model attributes为什么重置表单不会清除绑定的模型属性 【发布时间】:2017-12-20 12:05:09 【问题描述】:

我已使用主干-stickit bindings 将表单中的文本输入绑定到主干模型:

bindings: 
    '#txtRemarks': 'remarks',
    '#txtFromAccountNumber': 'account_no',
    '#fileChooser':'fileChooser'

当我重置表单时,文本输入中的值被清除,但值仍然存在于模型属性中。

【问题讨论】:

木偶默认没有bindings。您使用的是插件还是旧版本? 使用了backbone.stickit插件 【参考方案1】:

Stickit 输入元素的默认处理程序是 (source):


    selector: 'input',
    events: ['propertychange', 'input', 'change'],
    update: function($el, val)  $el.val(val); ,
    getVal: function($el) 
        return $el.val();
    

它会监听'propertychange', 'input', 'change',并且表单重置不会触发这些事件。

您将需要手动监听表单的reset 事件并手动更新模型。

var FormView = Backbone.View.extend(
    bindings:  /* ... */ ,
    events: 
        '#form-id reset': 'onReset',
    ,
    ui: 
        remarks: '.remarks-input',
        account: '.account-input'
    ,

    onReset: function(e) 
        this.model.set(
            remarks: this.getUI('remarks').val(),
            account: this.getUI('account').val(),
        );
    
);

处理表单时的另一个技巧是在进行任何更改之前将模型的副本保持在其初始状态。然后您可以使用该副本重置属性或检查是否有更改。

var FormView = Backbone.View.extend(
    bindings:  /* ... */ ,
    events: 
        '#form-id reset': 'onReset',
    ,
    initialize: function() 
        this.master = this.model.clone();
    ,

    onReset: function(e) 
        this.model.set(this.master.attributes);
    ,
    getChanges: function() 
        return this.master.changedAttributes(this.model.attributes);
    ,
    isDirty: function() 
        return Boolean(this.getChanges());
    ,
);

【讨论】:

发布时如何清除 Razor 页面模型上的绑定属性?

】发布时如何清除Razor页面模型上的绑定属性?【英文标题】:HowcanyouclearaboundpropertyonaRazorPage\'smodelwhenPOSTing?【发布时间】:2019-02-0302:54:17【问题描述】:我有一个绑定到输入字段的属性:<inputid="name"asp-for="ContactName"name="Contact... 查看详情

Xamarin 表单清除所有条目

】Xamarin表单清除所有条目【英文标题】:XamarinFormsClearAllEntries【发布时间】:2021-07-2406:12:39【问题描述】:有没有办法清除Xamarin.Forms应用程序中的所有条目?我检查了这个链接here,但没有帮助。【问题讨论】:是的。遍历所有... 查看详情

为啥此模型绑定在 Razor 页面中不起作用

】为啥此模型绑定在Razor页面中不起作用【英文标题】:WhythisModelBindingnotworkinginRazorPage为什么此模型绑定在Razor页面中不起作用【发布时间】:2022-01-1108:06:17【问题描述】:我正在使用带有简单示例的ASP.NETCore3.1来测试模型绑定... 查看详情

循环遍历表单上所有未绑定的控件并清除数据

...:我想遍历表单上的所有UNBOUND控件并清除它们的数据或重置它们的值。我有文本框、组合框和复选框。每次我尝试这样的事情:DimctlAsControlForEachctlInMe.ControlsIfIsNull(ctl.C 查看详情

.Net Core Ajax 表单提交不返回非绑定模型属性

】.NetCoreAjax表单提交不返回非绑定模型属性【英文标题】:.NetCoreAjaxformsubmitnotreturningnonbindedmodelproperty【发布时间】:2021-07-2417:34:28【问题描述】:我有带有表单ajax提交的.Net核心Web项目。在加载表单时,我将所有属性值设置为... 查看详情

为啥表单对象不会在 VBA 中为 Ms Access 加载 RecordSource 属性

】为啥表单对象不会在VBA中为MsAccess加载RecordSource属性【英文标题】:Whyformobjectdoesn\'tloadRecordSourceattributeinVBAforMsAccess为什么表单对象不会在VBA中为MsAccess加载RecordSource属性【发布时间】:2021-02-1710:19:59【问题描述】:我需要以编... 查看详情

在 Django 中,为啥模型中的 blank=True 不会使表单字段不是强制性的?

】在Django中,为啥模型中的blank=True不会使表单字段不是强制性的?【英文标题】:InDjango,whyblank=Trueinthemodelisnotmakingtheformfieldnotmandatory?在Django中,为什么模型中的blank=True不会使表单字段不是强制性的?【发布时间】:2020-05-2910:4... 查看详情

vueelement-ui的resetfields()方法重置表单无效问题及解决办法(代码片段)

问题:使用this.$ref[‘form‘].resetFields()无法重置表单项原因:1.没有给表单添加ref属性<el-formref="form"></el-form>2.表单项el-form-item没有添加prop属性,prop属性需要与input框绑定的属性一致<el-formref="form":model="sizeForm"label-width="... 查看详情

WPF 绑定无法与 int 类型的属性一起正常工作

...工作正常,但在一种情况下-如果我清除了TextBox的值,则不会调用属性设置器,尽管在TextBox中清除了值,但属性仍保留以 查看详情

使用计时器在模型和标签之间进行数据绑定

...可以取初始值,但它不会像预期的那样每秒更新一次。在表单构造函 查看详情

Laravel Livewire 绑定模型 Carbon 属性

...9:07:07【问题描述】:我正在使用LaravelLivewirev2,我需要将表单日期输入绑定到后端Livewire组件中的模型Carbon属性,但到期日期格式似乎是不可能的。更准确地说:选择日期时,表单日期输入选择器LiveWire使API调用发送正 查看详情

如何将集合属性绑定到 Spring MVC 中的表单

】如何将集合属性绑定到SpringMVC中的表单【英文标题】:HowdoIbindcollectionattributestoaforminSpringMVC【发布时间】:2010-09-2200:18:05【问题描述】:我正在尝试使用Spring-MVC将我的模型对象之一绑定到表单的字段。一切正常,除了模型对... 查看详情

为啥在使用 WriteValue 更新布尔绑定时会出现格式异常?

】为啥在使用WriteValue更新布尔绑定时会出现格式异常?【英文标题】:WhywouldIgetaformatexceptionwhenupdatingabooleanbindingwithWriteValue?为什么在使用WriteValue更新布尔绑定时会出现格式异常?【发布时间】:2015-09-0516:17:58【问题描述】:我... 查看详情

为啥表单标签会与我的 ngModel 和属性绑定混淆? ngModel 在 ngFor 里面 Form 标签

】为啥表单标签会与我的ngModel和属性绑定混淆?ngModel在ngFor里面Form标签【英文标题】:WhyformtagmesseswithmyngModelandattributesbinding?ngModelinngForinsideFormtag为什么表单标签会与我的ngModel和属性绑定混淆?ngModel在ngFor里面Form标签【发布时... 查看详情

为啥我的依赖属性绑定没有按预期工作?

】为啥我的依赖属性绑定没有按预期工作?【英文标题】:WhyismyDependencyPropertyBindingisnotworkingasexpected?为什么我的依赖属性绑定没有按预期工作?【发布时间】:2021-07-3121:07:57【问题描述】:我正在尝试制作一个包含ListView的自定... 查看详情

Django 表单向导,如何重置/清除向导?

】Django表单向导,如何重置/清除向导?【英文标题】:DjangoFormWizard,howtoreset/clearwizard?【发布时间】:2012-08-0914:30:26【问题描述】:我创建了一个运行良好的Django表单向导。但是,在完成向导并重新启动后,它会加载之前使用期... 查看详情

以表单数据作为对象保存在表单状态下的表单-重置不起作用(代码片段)

...nChange:]]]const[value,setValue]=useState(initialValue)。但是如果我重置数据对象(请参见handleResetClick功能),则不会清除输入(即使数据对象已清除)。我在做什么错?]>>我认为更改数据将导致重新渲染并重新传递initialValue,从而... 查看详情

model.rowCount() 不会绑定到 Item 的属性

】model.rowCount()不会绑定到Item的属性【英文标题】:model.rowCount()won\'tbindtoItem\'sproperty【发布时间】:2018-08-0713:41:21【问题描述】:我有一个ListView,它在Qml中使用名为rootModel的自定义C++模型进行初始化。该模型继承QAbstractListModel... 查看详情