マイテンプレート:呼び出し機能
<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>
マイスクリプト:
new Vue({
el: 'body',
methods: {
createConversation: function(id) {
console.log("createConversation()");
console.log(id);
}
}
});
テンプレートは、私はエラー[Vue warn]: v-on:click="createConversation" expects a function value, got undefined
を取得し、レンダリングされたとき。私は、コンポーネントテンプレートの中でメソッドを使う方法を知らない。誰かが私を助けることができたら、私は感謝しています。
。テンプレートは、データベースからユーザーを取得して表示します。次に、ボタンをクリックすると、新しい会話を作成します。 – nix9
他の答えのようなイベントを使うこともできますし、 'this。$ root'を使っていつでもroot Vueインスタンスにアクセスすることができます。だからあなたのクリックイベントで '$ root.createConversation(player.id)'を使うことができます。各コンポーネントが独自の機能を管理するようにコンポーネントを構造化することをお勧めします。これは再利用性とVueのコアコンセプトに最適です。 – Jeff
私のアプリを構造化したい。だから、私は異なる機能を混ぜることを望まないのです。 – nix9