vue.js - 如何访问嵌套的 vue.js 组件的值?
问题描述
我有一个名为的组件lbcontainer
和一个名为lbitem
.
现在我想将任意数量的lbitem
组件嵌套到一个lbcontainer
组件中。
该lbcontainer
组件有一个方法可以访问lbitem
我嵌套在组件中的所有lbcontainer
组件。
问题是:ref
我可以通过 访问该项目this.$ref.lbitem
,但这仅适用于组件声明,但不适用于稍后在 HTML 中使用该组件时。
Vue.component('lbcontainer', {
methods: {
"showChildren": function() {
console.log(this.$refs);
}
},
template: `
<div>
<slot></slot>
<a @click='showChildren'>Show children</a>
</div>
`
});
Vue.component('lbitem', {
data: function() {
return {
value: ""
}
},
template: `
<input v-model="value"></span>
`
});
new Vue({
el: "#app",
data: {
},
methods: {
}
});
<div id="app">
<lbcontainer>
<lbitem ref="item"></lbitem>
<lbitem ref="item"></lbitem>
</lbcontainer>
</div>
当我按下按钮时,console.log
显示一个空对象。如何访问嵌套的孩子?
解决方案
避免在 vue 中使用 $ref ...(在第一次渲染后填充 $ref ...)
孩子只能通过事件与他们的父母沟通......或者父母拥有所有数据并通过道具发送给他们的孩子。
如果父母和孩子必须编辑数据,您可以使用 v-model 或 .sync;
推荐阅读
- python - 我无法在 python 中打印由字典制作的数据框
- arrays - 如何通过单击标题以升序或降序对表格列进行排序
- mysql - 如何在特定目录中查找所有更高版本的sql文件并一一应用,如果任何导入失败恢复为原始文件
- java - 错误的第二个参数类型,找到'androidx.lifecycle.Lifecycle',需要'int'错误
- c# - Crystal Reports 中的嵌套 If Else 语句
- python - Web 服务器 MSAccess 错误:您取消了之前的操作
- google-sheets - 使用雅虎财务数据的谷歌表格迷你趋势查询
- database - Laravel 6 扫描图像并保存在数据库中
- javascript - 如何使用 Firebase 实时数据库在循环函数中返回具有不同表的组合数据
- tensorflow - 我可以为 tensorflow federated 中的每个客户端使用不同的权重和偏差吗?