Vue 2とlaravelを使用して外部をクリックした後にサイドバーを非表示にしようとしています。このサイドバーは、navbarコンポーネント内で作成されました。最初は@click="showSidenav = !showSidenav"
を追加して開き、データをshowSidenav: false
に初期化しました。また、サイドバーを隠すために近いアンカータグを追加しました。実際にはうまく動作しますが、サイドバーの外側をクリックしたときにも隠れてしまうのはどういうことなのでしょうか?メソッドshowSidenav
を作成し、要素のオープンを行い、nextTick
を試しましたが、メソッドを呼び出すときと同じ時間が実行されます。今のところ私はメソッド内でjqueryを使用してデータを再度変更しますが、再度ハンバーガーメニューをクリックするとデータは変更されません。vue 2で外部をクリックした後に要素を非表示にする
<a href="#" v-on-clickaway="away" @click="openSidenav">Hamburger menu</a>
スクリプト
import { mixin as clickaway } from 'vue-clickaway';
export default {
mixins: [ clickaway ],
data() {
return {
showSidenav: false,
}
},
methods: {
openSidenav: function() {
this.showSidenav = true
},
away: function() {
this.showSidenav = false
}
}
}
EDIT:@Nathanにより示唆されるよう
vue-clickaway
を追加しました。
は、なぜあなたは、DOMの操作とvue.jsを混合していますか? jQuery Lolなしで完全に実行可能です。 – WilomGfx
@WilomGfx、ええ笑と私はそれを書いた理由は嫌い:D – claudios