Я начинаю с vuejs и пытаюсь понять, что можно сделать со ссылкой на экземпляр дочернего компонента в корневом экземпляре. Я использовал атрибут ref, и он работает довольно хорошо, за исключением случаев, когда я использую его в одном компоненте файла (в тегах шаблона). В этом конкретном случае я получаю «неопределенный».
Итак, я пытаюсь понять, почему, потому что это может быть очень полезно для установления динамических ссылок. Вероятно, я мог бы легко обойти эту ситуацию, но я хотел бы понять проблему, а не убегать.
Так что если у кого есть идеи ;)
Я использую webpack для импорта одного файлового компонента в app.js и его компиляции. Однако компиляция шаблона выполняется не веб-пакетом, а браузером во время выполнения (может быть, это начало объяснения?).
Мое приложение очень простое, и я регистрирую свои ссылки при нажатии на заголовок, поэтому я не думаю, что это связано с обратным вызовом жизненного цикла.
Вот мои файлы:
app.js
import Vue from 'Vue';
import appButton from './appButton.vue';
import appSection from './appSection.vue';
var app = new Vue({
el: '#app',
components:
{
'app-button' : appButton
},
methods:
{
displayRefs: function()
{
console.log(this.$refs.ref1);
console.log(this.$refs.ref2);
console.log(this.$refs.ref3);
}
}
});
мой компонент appButton.vue
<template>
<div ref="ref3" v-bind:id="'button-'+name" class="button">{{label}}</div>
</template>
<script>
module.exports =
{
props: ['name', 'label']
}
</script>
мое тело index.html
<body>
<div id="app">
<div id="background"></div>
<div id="foreground">
<img id="photo" src="./background.jpg"></img>
<header ref="ref1">
<h1 v-on:click="displayRefs">My header exemple</h1>
</header>
<nav>
<app-button ref="ref2" name="presentation" label="Qui sommes-nous ?"></app-button>
</nav>
</div>
</div>
<script src="./app.js"></script>
</body>
ref1 (тег заголовка) и ref2 (тег кнопки приложения) найдены. Но ref3 (в моем компоненте с одним файлом) не определен. Также
Спасибо за весь ответ, который вы могли мне дать, надеюсь, это не глупая ошибка.