当前正在构建由json数组生成的表单的组件集,其对象类似于以下内容。我需要监视父值对象,以便填充其他字段并将它们彼此连接。
{
id: 'title',
label: 'Title',
type: 'text',
placement: 'main',
placeholder: 'Write Something...'
},
{
id: 'slug',
label: 'Slug',
type: 'slug',
placement: 'seo',
populateFrom: 'title',
gridSize: 6
}
组件具有层次结构,可以使父(或祖父母)知道字段值作为表单模型。
FormView
Field
FieldText
Field
FieldSlug
populateFrom属性,由FieldSlug检查,用于从选定的模型属性(在本例中为“标题”字段)填充数据。
// this.field is field definition object sampled above
// $emit('input') notifies FormView to change value for form
if (this.field.populateFrom) {
this.populateFrom = this.$parent.$watch('value', (after, before) => {
this.$emit('input', slug(after[this.field.populateFrom]))
}, {deep: true})
}
对于编辑和创建表单,我使用的是相同的视图(组件)。从Vuex获取数据并通过吸气剂过滤。在创建模式下,吸气剂无法从状态中找到任何对象并返回空对象。
如果为空对象,则$ parent.value不可观察。 (什么都没有触发)如果它从状态返回对象,那么它将运行得很好。
afaik, $ set使对象自动反应;多数民众赞成在“ FormView”内部设置数据。 数据设置成功,但没有由$ watch触发。
我缺少什么?
答案 0 :(得分:0)
它解决了反应性问题。