【问题标题】:Extjs - reset() not loading last value when trackResetOnLoad is trueExtjs - 当 trackResetOnLoad 为真时,reset() 不加载最后一个值
【发布时间】:2016-07-07 15:56:26
【问题描述】:

Extjs 文档trackResetOnLoad

如果设置为 true,reset() 将重置为最后加载或 setValues() 数据 而不是首次创建表单时。默认为:假

在我的表单中,我将 trackResetOnLoad 设置为 true,在 Afterrender 函数中,我使用 setValue() 更新了值并调用了 Reset 函数。 trackResetOnLoad 未重置为上一个值(setvalue())。

我是否错误地使用了 trackResetOnLoad 配置选项?如果可能,请解释 reset、setValue 和 trackResetOnLoad 将如何协同工作。 谢谢。

小提琴 https://fiddle.sencha.com/#fiddle/1d8m

注意:- 它不是重复的帖子。 this 帖子没有回答提取问题。

【问题讨论】:

    标签: javascript extjs extjs4


    【解决方案1】:

    Field.setValue() 被调用时,isDirty() 被设置为true。要在setValue() 之后保持表单不脏,您应该在相应字段上调用resetOriginalValue()

    Ext.ComponentQuery.query('#username')[0].setValue ('stackoverflow');
    Ext.ComponentQuery.query('#username')[0].resetOriginalValue();
    Ext.ComponentQuery.query('#panelFormID')[0].trackResetOnLoad = true;
    Ext.ComponentQuery.query('#panelFormID')[0].reset();
    

    【讨论】:

    • Ankit 你太棒了!! resetOriginalValue() 解决了我的问题。
    【解决方案2】:

    setValues() 不是指field.setValue(),而是指form.setValues()

    表单重置为form.setValues() 的最后一个值(以及form.load()form.loadRecord(),它们在后台使用form.setValues()),如src/form/Basic.js 所示:

    loadRecord: function(record) {
        this._record = record;
        return this.setValues(record.getData());
    },
    
    setValues: function(values) {
        var me = this,
            v, vLen, val;
    
        function setVal(fieldId, val) {
            var field = me.findField(fieldId);
            if (field) {
                field.setValue(val);
                if (me.trackResetOnLoad) {
                    field.resetOriginalValue();
    ...
    

    【讨论】:

    • 感谢您的回答。你能指导我如何检测 Field.setValue() 之后的变化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2018-02-22
    相关资源
    最近更新 更多