質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

415閲覧

Vue router-link内のコンポーネントのクリックイベントが動作しない。

michael-ilcsy

総合スコア180

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

0クリップ

投稿2019/02/04 14:10

編集2019/02/05 00:39

現在VueのSPAを作成していて、UIライブラリとして、fish-uiというものを採用しています。

メニューのレイアウトとして、ここの上から二段目の真ん中のサンプルをほとんどそのまま流用しています。
サンプルページで動作させてみると分かるかと思いますが、本来ならクリックするとactiveクラスが付与され、選択していることが分かるようになっています。ですが、router-linkで下のソースのように囲むと、routerの遷移は行われるのですが、fish-optionのクリックイベントが発火しません。

vue

1<fish-menu mode="inline" style="width: 200px;" defaultActive="3-3-0"> 2//ここから 3 <router-link to="/content"> 4 <fish-option index="0" content="Content"></fish-option> 5 </router-link> 6//ここまで 7 <fish-submenu index="1" mode="inline"> 8 <template slot="title">User</template> 9 <fish-option index="1-0" content="Jack"></fish-option> 10 <fish-option index="1-1" content="Lucy"></fish-option> 11 <fish-option index="1-2" content="Active"></fish-option> 12 </fish-submenu> 13</fish-menu>

# 試したこと

  • まずrouter-linkなしのfish-optionがちゃんとクラスが付与されるか → ちゃんとされる。
  • vueドキュメントにあるように、tagでfish-optionを指定 → 描画が崩れ、クリックイベントも発火しない。さらに、propsを渡せないのでtagでは無理と判断。
  • fish-option内にrouter-linkを移動 → 本来slotの中に入るfish-optioncontent属性がrouterに上書きされ、何も表示されないようになり断念(クリックイベントは取れて、activeが付与された。)
  • router-link@click.nativeイベントを設定し、methodsでe.currentTarget.firstElementChild.click()で無理やりクリックイベントを発火させる → DOM自体は取得できていたが、クリックイベントが発火しなかった。おそらく、VueコンポーネントからDOMにレンダリング後だから?

今のところ、何時間も調査してダメだったのでほぼ諦めているのですが、やはり現在地を表示する機能はあった方がいいので、もし解決策をお知りの方がいらっしゃいましたら、お教えしていただきたいです。

# 参考
fish-optionコンポーネントのgithubソース

koji22a👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問