mẫu của tôi:chức năng gọi bên Vue.js mẫu
<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>
kịch bản của tôi:
new Vue({
el: 'body',
methods: {
createConversation: function(id) {
console.log("createConversation()");
console.log(id);
}
}
});
Khi mẫu được render tôi nhận được một lỗi [Vue warn]: v-on:click="createConversation" expects a function value, got undefined
. Tôi không biết cách sử dụng các phương thức bên trong một mẫu thành phần. Nếu ai đó có thể giúp tôi, tôi sẽ đánh giá cao.
Tôi không muốn chức năng này trong thành phần đó bởi vì nó làm điều gì đó hoàn toàn khác nhau . Mẫu nhận người dùng từ cơ sở dữ liệu và hiển thị chúng. Sau đó, tôi muốn tạo cuộc trò chuyện mới khi tôi nhấp vào nút. – nix9
Bạn có thể sử dụng các sự kiện như trong câu trả lời khác hoặc bạn luôn có thể truy cập cá thể gốc Vue bằng cách sử dụng 'this. $ Root'. Vì vậy, trên sự kiện nhấp chuột của bạn, bạn có thể sử dụng '$ root.createConversation (player.id)'. Tôi khuyến khích bạn cố gắng cấu trúc các thành phần của bạn để mỗi thành phần quản lý chức năng riêng của nó, đây là cách tốt nhất để sử dụng lại và khái niệm cốt lõi của Vue. – Jeff
Tôi muốn cấu trúc ứng dụng của mình. Đó là lý do tại sao tôi không muốn kết hợp các chức năng khác nhau. – nix9