javascript - 识别组件的嵌套位置
问题描述
在我的页面上,我有几个相同组件的实例:
<v-date-picker
@click:date="myMethod"
></v-date-picker>
new Vue({
el: '#app',
vuetify: new Vuetify(),
methods: {
myMethod: function (value) {
// Get nested components
// i.e. ['v-app', 'v-content', 'v-sidebar', 'v-date-picker']
},
...
我想做的是确定正在与哪个日期选择器进行交互。例如,我在页面上嵌入了一个,而在侧边栏中有另一个。
我希望我基本上可以通过一种不需要每个组件中的代码的方式来做到这一点——有没有办法遍历全局 Vue 对象来获取我正在寻找的数据?
解决方案
您可以使用event.currentTarget
返回您与之交互的元素:
new Vue({
el: '#app',
methods: {
doStuff() {
console.clear()
console.log(event.currentTarget)
}
}
})
div div {border: 1px solid #ccc; padding: 4px; margin: 5px; cursor: pointer; display: inline-block}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div @click="doStuff()">Hellooo</div>
<div @click="doStuff()">Goodbyeee</div>
</div>
或者
您可以使用该ref
属性并访问this.$refs
对象中的元素:
new Vue({
el: '#app',
methods: {
doStuff() {
console.clear()
console.log(this.$refs)
}
}
})
div div {border: 1px solid #ccc; padding: 4px; margin: 5px; cursor: pointer; display: inline-block}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div @click="doStuff()" ref="div1">Hellooo</div>
<div @click="doStuff()" ref="div2">Goodbyeee</div>
</div>
推荐阅读
- crystal-reports - 如何编辑水晶报表“显示 SQL 查询”?
- php - Laravel 函数无法访问 AJAX 数据
- python - 是否可以将内置表中的静态 Python 模块用作 Python 包的子模块?
- c# - 使用 LINQ 在 2 个列表之间选择匹配结果
- arrays - Lua - 由向量索引的数组
- javascript - 故意在 Javascript 中创建新错误以检查代码行为
- javascript - 如何使用 JavaScript 将用户输入时间数据(分钟和秒)附加到数组中?
- simulink - 如何将模拟速度慢到秒级实时通过?
- ios - 创建具有不同起点和终点的多个渐变视图的最佳方法是什么
- mysql - 我无法连接新版本的 vscode 和新版本的 mysql