Folgendes Problem:So greifen Sie auf den Inhalt des Steckplatzes in einer anderen untergeordneten Komponente zu
Ich habe eine Vue.js-Komponente, die auf dem übergeordneten DOM basiert. Aber in dem Moment, in dem die Requisite passiert ist, ist sie (this.$el
) undefiniert, wahrscheinlich weil sie noch nicht gemountet ist.
vue Vorlagendatei sieht Meine Komponente wie folgt aus:
<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>
Die Komponente, die oben verwendet dieses Stück Code enthält:
<article-index :content="this.$el"></article-index>
ich das Warten auf die übergeordneten Komponente gedacht, um mounted, aber auf diese Weise kann ich die Vorlage nicht wie oben beschrieben behalten, weil sie immer versuchen würde, sofort auf die Methode (oder Variable) zuzugreifen.
Wie kann ich das lösen?
Edit:
<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>
Hier ist die Vorlage der übergeordneten Komponente. Das einzige, was ich wirklich brauche, ist das .article
Div oder der Inhalt des Slots.
Warum sind vorbei Sie 'diese $ el' in prop.? – Saurabh
@saurabh Weil ich auf das DOM-Element zugreifen muss, um querySelector auszuführen. Wie würdest du es machen? – 22samuelk
Ich werde versuchen, dort eine Vue-Variable zu übergeben, können Sie auch Ihren HTML-Code des übergeordneten DOMs hinzufügen und darauf hinweisen, auf was genau Sie zugreifen möchten. – Saurabh