Я начинаю с vuejs и пытаюсь понять, что можно сделать с ссылкой на экземпляр дочернего компонента в корневом экземпляре. Я использовал атрибут ref, и он работает довольно хорошо, за исключением случаев, когда я использую его в одном компоненте файла (в тегах шаблона). В этом конкретном случае я получаю «неопределенный».
Итак, я пытаюсь понять почему, потому что это может быть очень полезно для создания динамических ссылок. Возможно, я мог бы легко обойти эту ситуацию, но я хотел бы понять проблему, а не бежать.
Так что, если у кого-то есть идея;)
Я использую веб-пакет для импорта отдельного файлового компонента в мой app.js и скомпилировал его. Однако компиляция шаблона выполняется не веб-пакетом, а браузером во время выполнения (может быть, это начало объяснения?).
Мое приложение очень простое, и я регистрирую свои ссылки по клику на заголовке, так что я не думаю, что это связано с обратным вызовом lifecylce.
Вот мои файлы:
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
<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 (в моем отдельном файловом компоненте) не определен. Также
Спасибо за весь ответ, который вы могли бы дать мне, надеясь, что это не глупая ошибка.