Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用v形插槽(作用域插槽)时访问此。$slots_Javascript_Vue.js_Vuejs2_Vue Component - Fatal编程技术网

Javascript 使用v形插槽(作用域插槽)时访问此。$slots

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

在特定的用例中,我必须访问插槽中的DOM元素,以获取其渲染的
宽度
高度
。对于普通插槽,可以通过访问
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