代码之家  ›  专栏  ›  技术社区  ›  Ben Harvey

数据对象的子级在记录之前不进行计算。VUE JS

  •  1
  • Ben Harvey  · 技术社区  · 7 年前

    我正在写一个组件( form )它充当从父组件传递的表单字段的容器。

    我将表单字段作为道具传递给孩子:

    formFields: [
        { name: 'email', type: 'email' },
        {
            name: 'sub_group',
            type: 'group',
            contents: [
                { name: 'sub_field_01', type: 'text' },
                { name: 'sub_field_02', type: 'text' },
            ]
        }
    ]
    

    这一切都显示良好,并在我的孩子组件工作良好。

    我使用一个computed属性来构建数据,以发布到路由以更新资源。我分组 sub_group 所以当我发帖的时候,管理员知道 亚群 是一个数组。

    然而, 亚群 数组始终为空 直到我把它记录下来 ,因此它只在记录时计算。最高层( email 在这种情况下)总是出现。

    我试过去掉computed属性并使用一个方法来构建要发布的对象,但我有同样的问题。我真的不知道发生了什么。如何“强制”计算出的属性进行计算?

    编辑添加表单示例

    呈现窗体的代码:

    <div v-for="field in formFields">
        <!-- Individual Field -->
        <div v-if="field.type !== 'group'">
            <label v-if="field.label">{{ field.label }}</label>
            <input :type="field.type" :name="field.name" v-model="field.value">   
        </div>
        <!-- Group -->
        <div v-else>
            <div v-for="child in field.group">
                <label v-if="child.label">{{ child.label }}</label>
                <input :type="child.type" :name="child.name" v-model="child.value">   
            </div>
        </div>
    </div>
    

    post的计算属性:

    <div v-for=“表单域中的域”>
    &!--单个字段-->
    <div v-if=“字段类型!='组'>
    <label v-if=“field.label”>{{field.label}}</标签>
    <input:type=“field.type”:name=“field.name”v-model=“field.value”>
    和;
    &!--组-->
    <div v-else>
    <div v-for=“field.group中的子项”>
    <label v-if=“child.label”>{{child.label}}</标签>
    <input:type=“child.type”:name=“child.name”v-model=“child.value”>
    和;
    &L/DIV & GT;
    和;
    

    我意识到这需要重构,但我不能让它像这样工作。我试着加上 cache:false 以及计算属性的getter,但这不起作用。

    0 回复  |  直到 7 年前
    推荐文章