私はvueJsでかなり新しく、タブメニューのようなものを作成しようとしています。 私はドロップダウンのナビゲーションバーを持っており、各リンクは新しいタブを作成し、この新しいタブはVueコンポーネントです。テンプレート内のVueディレクティブ
作成したタブにv-on:click
ディレクティブを配置しようとしていますが、この関数は呼び出されません。実際、私は
ようなエラー「プロパティまたはメソッド 『はremoveTabは』インスタンスで定義されたが、 は、レンダリング時に参照されていません。」を取得します
と
"はremoveTabは関数ではありません。"
しかし、removeTab
は関数であり、v-on:click
を静的なhtmlタグに入れると機能します。間違ったことをやっているのですか、動的に読み込まれたコンポーネントにディレクティブを持たせることができませんか?
私が説明しようとしていることをより良く示すために、ここでは単純化したコードを示します。 RemoveTabはただのアラートで、いつ動作するのか、動作しないのかを示すだけです。
HTML<div id="application">
<button class="item" v-on:click="addTab()">Add Button</button>
<button class="item" v-on:click="removeTab()">Remove</button>
<br><br>
<div >
<tab v-for ="tab in tabs" :tab="tab"></tab>
</div>
</div>
<template id="tab-template">
<button class="item">
{{tab.nomeTab}} <div v-on:click="removeTab()">remove</div>
</button>
</template>
JS
Vue.component('tab', {
template: '#tab-template',
props: ['tab']
});
new Vue({
el: '#application',
data:{
newTab:'',
tabs: [
{nomeTab:'Home', contenutoTab:'ciao'},
]
},
methods:{
addTab: function() {
this.tabs.push({
nomeTab: 'NewTab',
});
},
removeTab: function() {
alert("Here it works");
}
}
});
とここではJSFiddleです。
ありがとうございました