Skip to content

1.x版本 formItem的key为'xx.xx.xx'形式时,selfUpdate不生效 #7977

@foxmiy

Description

@foxmiy
  • I have searched the issues of this repository and believe that this is not a duplicate.

Version

1.7.7

Environment

1.6.5

Reproduction link

https:fix

Steps to reproduce

setFields: function setFields(maybeNestedFields, callback) {
var _this4 = this;

var fields = this.fieldsStore.flattenRegisteredFields(maybeNestedFields);
this.fieldsStore.setFields(fields);
var changedFields = Object.keys(fields).reduce(function (acc, name) {
return set(acc, name, _this4.fieldsStore.getField(name));
}, {});
if (onFieldsChange) {
var _changedFields = Object.keys(fields).reduce(function (acc, name) {
return set(acc, name, _this4.fieldsStore.getField(name));
}, {});
onFieldsChange(this, _changedFields, this.fieldsStore.getNestedAllFields());
}
var formContext = templateContext || this;
var allUpdate = false;
Object.keys(changedFields).forEach(function (key) {
var formItem = _this4.formItems[key];
formItem = typeof formItem === 'function' ? formItem() : formItem;
if (formItem && formItem.itemSelfUpdate) {
console.log('formItem itemSelfUpdate')
formItem.$forceUpdate();
} else {
console.log('allUpdate')
allUpdate = true;
}
});
if (allUpdate) {
console.log('formItem allUpdate')
formContext.$forceUpdate();
}
this.$nextTick(function () {
callback && callback();
});
},

原因是再setFields中 判断itemSelfUpdate用的changedFields通过set()返回 原先的{'x.y.z':object} 会被解析成{'x':{'y':{'z':object}}}
此时var formItem = _this4.formItems[key];返回为空 我自己解决是将Object.keys(changedFields).forEach() 改为Object.keys(fields).forEach()

What is expected?

修复他

What is actually happening?

1.x版本 formItem的key为'xx.xx.xx'形式时,selfUpdate不生效 原因是再setFields中 判断itemSelfUpdate用的changedFields通过set()返回 原先的{'x.y.z':object} 会被解析成{'x':{'y':{'z':object}}}
此时var formItem = _this4.formItems[key];返回为空

Metadata

Metadata

Assignees

No one assigned

    Labels

    1.xversion 1.x

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions