vue.js - 为什么 vue 子组件会自动更改父组件中的数据?
问题描述
我正在尝试这样的事情:
父组件
<template v-else>
<b-card class="d-flex card-shadow">
<b-list-group-item
class="d-flex justify-content-between border-0 pl-0"
v-for="(userExperience, index) in userExperiences"
:key="index"
>
<template>
<p class="mb-0 fs--1 font-weight-600">
{{ userExperience.designation }}
</p>
</template>
<template v-slot:action-buttons>
<div class="d-flex mt-1">
<b-button
variant="link"
class="p-0 my-0 ml-0 no-underline fs--1 mr-3 text-blue font-weight-600"
v-b-modal.edit-experience-modal
@click="selectedExperience = userExperience"
>Edit or add details</b-button
>
</div>
</template>
</summary-container>
</b-list-group-item>
</b-card>
<edit-user-experience :experience="selectedExperience" />
</template>
<script>
export default {
data(){
userExperiences: [], // some data
}
}
</script>
编辑用户体验.vue
<b-modal
id="edit-experience-modal"
title="Edit Experience"
cancelTitle="Discard"
okTitle="Save"
button-size="sm"
hide-header-close
return-focus="false"
@ok="handleEditExperience"
@hide="resetFormData"
>
<create-or-edit-experience-form
v-model="userExperience"
:experience="experience"
:handle-submit="handleEditExperience"
:loading="loading"
/>
</b-modal>
问题是在更改其中的值时会改变父组件中creatEorEditExperience
的数据。userExperience
可视化问题:
当我尝试更改中的数据时1
,它会自动更改中的数据2
。
重点是什么 ?
解决方案
v-model
将输入字段绑定到您要求的数据。通过要求create-or-edit-experience
绑定到userExperience
,您是在告诉它主动更改存储在该对象中的值。
您可以在子组件中有一个不同的对象来存储临时数据,然后handleEditExperience
您可以在userExperience
.
它目前的工作方式是预期的行为v-model
推荐阅读
- java - Scala(Shell):java.lang.InternalError:格式错误的类名
- python - if df.A=0 & df.b=1 then df.c=1/ pandas python
- php - 无论结果如何,SQL 查询总是返回 1
- ruby-on-rails - 我可以检测是否在命令行上触发了 rake 任务(而不是使用 cron 等)?
- momentjs - MomentJS 仅西班牙语将“无效日期”翻译为本地
- javascript - 为什么我的简单 Angular ui.router 不起作用?
- python-3.x - 如何将此超时和间隔转换为使用毫秒
- excel - 远程服务器机器不可用错误“462”
- .net - .NET oracle 连接 TNS 无法解析连接标识符
- python - for循环中的增量索引