【发布时间】:2017-05-22 05:08:08
【问题描述】:
以下问题:
我有一个依赖于其父 DOM 的 Vue.js 组件。但是当 prop 被传递时,它 (this.$el) 是未定义的,可能是因为它还没有挂载。
我的组件的vue模板文件是这样的:
<template>
<md-card>
<md-card-content>
<ol>
<li v-for="item in headings(content)">
<a :href="`#${item.id}`">{{ item.name }}</a>
</li>
</ol>
</md-card-content>
</md-card>
</template>
<script>
export default {
props: ['content'],
methods: {
headings(content) {
// DOM element is used
// At this moment, `content` is undefined
},
},
};
</script>
使用上述的组件包括这段代码:
<article-index :content="this.$el"></article-index>
我想过等待父组件挂载,但那样我似乎无法像上面那样保留模板,因为它总是会尝试立即访问方法(或变量)。
我该如何解决这个问题?
编辑:
<template>
<div class="content">
<div class="left"><article-index :content="this.$el"></article-index></div>
<div class="article"><slot></slot></div>
<div class="right"><slot name="aside"></slot></div>
</div>
</template>
这是父组件的模板。我唯一真正需要的是.article div,或插槽的内容。
【问题讨论】:
-
你为什么要在 prop 中传递
this.$el? -
@saurabh 因为我需要访问 DOM 元素才能执行 querySelector。你会怎么做?
-
我会尝试在那里传递一个 vue 变量,您能否也添加您的父 DOM 的 HTML,并指出您想要访问的确切内容。
-
@saurabh 这样做了
-
@saurabh 我看到你编辑了标题...好吧,我不知道我是如何访问插槽 DOM 的????
标签: javascript vue.js vue-loader