Javascript 使用v形插槽(作用域插槽)时访问此。$slots
在特定的用例中,我必须访问插槽中的DOM元素,以获取其渲染的Javascript 使用v形插槽(作用域插槽)时访问此。$slots,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,在特定的用例中,我必须访问插槽中的DOM元素,以获取其渲染的宽度和高度。对于普通插槽,可以通过访问this.$slots.default[0].elm来实现 现在我添加了一个作用域插槽来访问组件内部的数据,这导致这个。$slots为空并破坏了我的代码 如何访问使用插槽作用域的插槽的DOM元素 基本示例代码(注意,当使用作用域插槽时,this.$slots导致{};当使用普通插槽时,它导致{default:Array(1)}): App.vue: {{someBool}} 你好 你好 从“./c
宽度
和高度
。对于普通插槽,可以通过访问this.$slots.default[0].elm
来实现
现在我添加了一个作用域插槽来访问组件内部的数据,这导致这个。$slots
为空并破坏了我的代码
如何访问使用插槽作用域的插槽的DOM元素
基本示例代码(注意,当使用作用域插槽时,this.$slots
导致{}
;当使用普通插槽时,它导致{default:Array(1)}
):
App.vue
:
{{someBool}}
你好
你好
从“./components/HelloWorld.vue”导入HelloWorld;
导出默认值{
名称:“应用程序”,
组成部分:{
HelloWorld,
},
};
HelloWorld.vue
:
导出默认值{
名称:“HelloWorld”,
数据(){
返回{
萨默布尔:错,
};
},
安装的(){
console.log(这是$slots);
},
};
使用,包括作用域插槽和非作用域插槽:
导出默认值{
安装的(){
console.log(this.$scopedSlots.default())
}
}
这并不能解决问题,因为在使用作用域插槽时,
.elm
属性是未定义的
。但是我需要它来计算内容的宽度和高度。@SUBHUMAN我假设.elm
是您选择的组件的自定义属性$scopedSlots.default()
返回与最初使用this.$slots.default
时相同的数组结果,因此相当于this.$slots.default[0]。elm
是$scopedSlots.default()在作用域插槽中访问.elm
不推荐,因为这正在“改变”,我必须澄清,通过以下代码,我得到了我想要的结果,因此我将标记您的答案为正确:js const{context}=this.$scopedSlots.default()[0];this.slotdomellement=context.$children.find((vnode)=>vnode.\u uid==this.\u uid)。$el代码>