mojego szablonu:wywoływania funkcji wewnątrz Vue.js szablonu
<template id="players-template" inline-template>
<div v-for="player in players">
<div v-bind:class="{ 'row': ($index + 1) % 3 == 0 }">
<div class="player col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<a href="#">{{ player.username }}</a>
<span class="small pull-right">{{ player.createdAt }}</span>
</h3>
</div>
<div class="panel-body">
<img v-bind:src="player.avatar" alt="{{ player.username }}" class="img-circle center-block">
</div>
<div class="panel-footer">
<div class="btn-group btn-group-justified" role="group" aria-label="...">
<a href="#" class="btn btn-primary btn-success send-message" data-toggle="tooltip" data-placement="bottom" title="Wyślij wiadomość" v-bind:id="player.id" @click="createConversation(player.id)"><span class="glyphicon glyphicon-envelope"></span> </a>
<a href="#" class="btn btn-primary btn-info" data-toggle="tooltip" data-placement="bottom" title="Pokaż profil"><span class="glyphicon glyphicon-user"></span> </a>
<a href="#" class="btn btn-primary btn-primary" data-toggle="tooltip" data-placement="bottom" title="Zobacz szczegółowe informacje o poście"><span class="glyphicon glyphicon-option-horizontal"></span> </a>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
Mój skrypt:
new Vue({
el: 'body',
methods: {
createConversation: function(id) {
console.log("createConversation()");
console.log(id);
}
}
});
Gdy szablon jest trójwymiarowa i dostaje błąd [Vue warn]: v-on:click="createConversation" expects a function value, got undefined
. Nie wiem, jak używać metod w szablonie komponentu. Jeśli ktoś mógłby mi pomóc, byłbym wdzięczny.
nie chcę tej funkcji w tego składnika, ponieważ robi coś zupełnie innego . Szablon pobiera użytkowników z bazy danych i wyświetla je. Następnie chcę utworzyć nową rozmowę po kliknięciu przycisku. – nix9
Możesz używać zdarzeń, takich jak w drugiej odpowiedzi, lub zawsze możesz uzyskać dostęp do głównej instancji Vue, używając 'this. $ Root'. Tak więc w przypadku zdarzenia kliknięcia możesz użyć '$ root.createConversation (player.id)'. Zachęcam do spróbowania strukturyzacji komponentów, aby każdy komponent mógł zarządzać własną funkcjonalnością, jest to najlepsze rozwiązanie dla ponownego użycia i podstawowej koncepcji Vue. – Jeff
Chcę strukturę mojej aplikacji. Dlatego nie chcę mieszać różnych funkcji. – nix9