-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Description
- 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
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];返回为空