登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
Gitee AI
NEW
我知道了
查看详情
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
WEB应用开发
>
后台管理框架
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
84
Star
1.2K
Fork
346
lybbn
/
django-vue-lyadmin
代码
Issues
28
Pull Requests
1
Wiki
统计
流水线
服务
Gitee Pages
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
我知道了,不再自动展开
更新失败,请稍后重试!
Issues
/
详情
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
vue3中使用v-if判断子组件是否显示时,双向绑定的变量失效!!!
待办的
#IABSIA
lybbn
拥有者
创建于
2024-07-09 21:50
在 Vue 中,如果你在使用 v-if 控制子组件的显示时遇到双向绑定数据失效的情况,主要原因是因为 v-if 会在条件不满足时销毁和重新创建子组件,这会导致子组件的状态被重置,从而使得双向绑定的数据也随之失效。 **解决方案:** 1. 使用 `v-show` 替代 `v-if` 如果你只是想控制子组件的显示和隐藏,而不是销毁和重建子组件,可以考虑使用 `v-show` 替代`v-if`。`v-show`只是简单地控制 CSS 的 display 属性,不会销毁和重新创建子组件,因此双向绑定的数据不会失效。 ``` <template> <ChildComponent v-show="showChild" v-model:height="parentHeight" /> <!-- 或者使用.sync --> <!-- <ChildComponent v-show="showChild" :height.sync="parentHeight" /> --> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { showChild: true, parentHeight: 'auto' }; } }; </script> ``` 2. 保持 `v-if` 的同时重新绑定数据 如果需要保留 v-if 条件控制子组件的创建和销毁,同时又希望保持双向绑定的数据有效,可以在重新创建子组件时,手动重新绑定数据。这可以通过监听 v-if 的变化,并在变化时手动更新数据来实现。 ``` <template> <ChildComponent v-if="showChild" :height="parentHeight" @update:height="parentHeight = $event" /> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { showChild: true, parentHeight: 'auto' }; }, watch: { showChild(newValue) { if (newValue) { // 如果子组件重新创建,手动更新数据绑定 this.parentHeight = 'auto'; // 重置数据 } } } }; </script> ``` 在这个示例中,当 showChild 变为 true 时,我们手动将 parentHeight 数据重置,以确保新创建的子组件能够正确地绑定数据。 **总结** 选择使用 v-show 还是 v-if 取决于你的具体需求。如果你需要在控制显示和隐藏的同时保持双向绑定数据的有效性,可以使用 v-show。如果需要根据条件销毁和重新创建子组件,你可以在 v-if 的变化时手动重新绑定数据。
在 Vue 中,如果你在使用 v-if 控制子组件的显示时遇到双向绑定数据失效的情况,主要原因是因为 v-if 会在条件不满足时销毁和重新创建子组件,这会导致子组件的状态被重置,从而使得双向绑定的数据也随之失效。 **解决方案:** 1. 使用 `v-show` 替代 `v-if` 如果你只是想控制子组件的显示和隐藏,而不是销毁和重建子组件,可以考虑使用 `v-show` 替代`v-if`。`v-show`只是简单地控制 CSS 的 display 属性,不会销毁和重新创建子组件,因此双向绑定的数据不会失效。 ``` <template> <ChildComponent v-show="showChild" v-model:height="parentHeight" /> <!-- 或者使用.sync --> <!-- <ChildComponent v-show="showChild" :height.sync="parentHeight" /> --> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { showChild: true, parentHeight: 'auto' }; } }; </script> ``` 2. 保持 `v-if` 的同时重新绑定数据 如果需要保留 v-if 条件控制子组件的创建和销毁,同时又希望保持双向绑定的数据有效,可以在重新创建子组件时,手动重新绑定数据。这可以通过监听 v-if 的变化,并在变化时手动更新数据来实现。 ``` <template> <ChildComponent v-if="showChild" :height="parentHeight" @update:height="parentHeight = $event" /> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { showChild: true, parentHeight: 'auto' }; }, watch: { showChild(newValue) { if (newValue) { // 如果子组件重新创建,手动更新数据绑定 this.parentHeight = 'auto'; // 重置数据 } } } }; </script> ``` 在这个示例中,当 showChild 变为 true 时,我们手动将 parentHeight 数据重置,以确保新创建的子组件能够正确地绑定数据。 **总结** 选择使用 v-show 还是 v-if 取决于你的具体需求。如果你需要在控制显示和隐藏的同时保持双向绑定数据的有效性,可以使用 v-show。如果需要根据条件销毁和重新创建子组件,你可以在 v-if 的变化时手动重新绑定数据。
评论 (
0
)
lybbn
创建了
任务
lybbn
添加了
问答
标签
lybbn
修改了
描述
原值
在 Vue 中,如果你在使用 v-if 控制子组件的显示时遇到双向绑定数据失效的情况,主要原因是因为 v-if 会在条件不满足时销毁和重新创建子组件,这会导致子组件的状态被重置,从而使得双向绑定的数据也随之失效。
**解决方案:**
1. 使用
v-show 替代 v-if
如果你只是想控制子组件的显示和隐藏,而不是销毁和重建子组件,可以考虑使用 v-show 替代 v-if。v-show 只是简单地控制 CSS 的 display 属性,不会销毁和重新创建子组件,因此双向绑定的数据不会失效。
```
<template>
<ChildComponent v-show="showChild" v-model:height="parentHeight" />
<
!-- 或者使用.sync -->
<!--
<ChildComponent v-show="showChild" :height.sync="parentHeight" /> -->
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
c
o
mpon
e
nts: {
ChildComponent
},
data() {
return {
showChild: true,
parentHeigh
t
: 'auto'
};
}
};
</script>
```
2. 保持 v-if 的同时重新绑定数据
如果需要保留
v-if
条件控制子组件的创建和销毁,同时又希望保持双向绑定的数据有效,可以在重新创建子组件时,手动重新绑定数据。这可以通过监听 v-if 的变化,并在变化时手动更新数据来实现。
```
<template>
<ChildComponent v-if="showChild" :height="parentHeight" @update:height="parentHeight = $event" />
<
/template>
<
scri
p
t>
import ChildComponent from './ChildComponent.vue';
ex
port
default {
components: {
ChildComponent
},
data() {
return {
showChild: true,
pa
r
entHeight: 'auto'
};
},
watch: {
showChild(newValue) {
if
(newValue) {
// 如果子组件重新创建,手动更新数据绑定
this.p
a
rentHeight = 'auto'; // 重置数据
}
}
}
};
</script>
```
在这个示例中,当 showChild 变为 true 时,我们手动将 parentHeight 数据重置,以确保新创建的子组件能够正确地绑定数据。
**总结**
选择使用 v-show 还是 v-if 取决于你的具体需求。如果你需要在控制显示和隐藏的同时保持双向绑定数据的有效性,可以使用 v-show。如果需要根据条件销毁和重新创建子组件,你可以在 v-if 的变化时手动重新绑定数据。
新值
在 Vue 中,如果你在使用 v-if 控制子组件的显示时遇到双向绑定数据失效的情况,主要原因是因为 v-if 会在条件不满足时销毁和重新创建子组件,这会导致子组件的状态被重置,从而使得双向绑定的数据也随之失效。
**解决方案:**
1. 使用
`v-show` 替代 `v-if`
如果你只是想控制子组件的显示和隐藏,而不是销毁和重建子组件,可以考虑使用 `v-show` 替代`v-if`。`v-show`只是简单地控制 CSS 的 display 属性,不会销毁和重新创建子组件,因此双向绑定的数据不会失效。
```
<template>
<
ChildComponent v-show="showChild" v-model:height="parentHeight" />
<!--
或者使用.sync -->
<!-- <ChildComponent v-show="showChild" :height.sync="parentHeight" /> -->
</template>
<script>
import ChildComponent from './ChildComponent.vue';
exp
o
rt d
e
fault {
components: {
ChildComponent
},
data() {
return {
showChild:
t
rue,
parentHeight: 'auto'
};
}
};
</script>
```
2. 保持 `
v-if
` 的同时重新绑定数据
如果需要保留 v-if 条件控制子组件的创建和销毁,同时又希望保持双向绑定的数据有效,可以在重新创建子组件时,手动重新绑定数据。这可以通过监听 v-if 的变化,并在变化时手动更新数据来实现。
```
<
template>
<ChildComponent v-if="showChild" :height="parentHeight" @update:height="parentHeight = $event" />
<
/tem
p
late>
<script>
im
port
ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
data() {
retu
r
n {
showChild: true,
parentHeight: 'auto'
};
},
watch:
{
showChild(newValue) {
if (newV
a
lue) {
// 如果子组件重新创建,手动更新数据绑定
this.parentHeight = 'auto'; // 重置数据
}
}
}
};
</script>
```
在这个示例中,当 showChild 变为 true 时,我们手动将 parentHeight 数据重置,以确保新创建的子组件能够正确地绑定数据。
**总结**
选择使用 v-show 还是 v-if 取决于你的具体需求。如果你需要在控制显示和隐藏的同时保持双向绑定数据的有效性,可以使用 v-show。如果需要根据条件销毁和重新创建子组件,你可以在 v-if 的变化时手动重新绑定数据。
展开全部操作日志
折叠全部操作日志
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
问答
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (2)
标签 (72)
master
django-vue2-lyadmin
v3.2.12
v3.2.10
v3.2.9
v3.2.8
v3.2.7
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.1.10
v3.1.9
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v2.1.11
v2.1.10
v2.1.9
v2.1.8
v2.1.7
v2.1.6
v2.1.5
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.0.20
v1.0.19
v1.0.18
v1.0.17
v1.0.16
v1.0.15
v1.0.14
v1.0.13
v1.0.12
v1.0.11
v1.0.10
v1.0.9
v1.0.8
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
Python
1
https://gitee.com/lybbn/django-vue-lyadmin.git
git@gitee.com:lybbn/django-vue-lyadmin.git
lybbn
django-vue-lyadmin
django-vue-lyadmin
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册