のスロットのコンテンツにアクセスするには:はどのように問題に続いて別の子コンポーネント
私は、その親のDOMに依存しているVue.js成分を有します。しかし、小道具が通過した瞬間には、それはまだマウントされていない可能性が高いため、(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>
1は、上記のコードのこの部分を含んで使用するコンポーネント:私はあることを親コンポーネントを待っていると考え
<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、またはスロットの内容だけです。
は、なぜあなたは 'これを渡している小道具で$ el'。? – Saurabh
@saurabh execute querySelectorを実行するには、DOM要素にアクセスする必要があるためです。どうしますか? – 22samuelk
私はそこにvue変数を渡そうとしますが、親DOMのHTMLも追加して、アクセスしたいものが何であるかを指摘できます。私はあなたがタイトルを編集した参照@saurabh – Saurabh