【간단】vue-click-outside 라이브러리를 사용해 보았다
연말 연시에 만들었던 ToDo 앱으로 매우 유용한 라이브러리를 소개합니다.
'vue-click-outside'를 사용하려는 이유
실제로 "vue-click-outside"를 사용한 앱은 여기입니다.
이 이미지에서 말하면 검은 부분을 누르거나 클릭하면 모달이 닫힙니다.
실제 코드
ToDo.vue
<template>
---中略---
<div class="modal" :class="{'is-active':isActive}"> //isActiveがtrueならモーダルを表示
<div v-click-outside="close" @click="close" class="modal-background"></div>
<div class="modal-content">
<div class="box">
<div class="content has-text-centered">
<div class="control">
<form class="field is-grouped" @submit.prevent="Add">
<div class="control is-expanded">
<input class="input is-rounded" type="text" v-model="newItem" placeholder="Title">
<textarea class="textarea" type="text" v-model="newContent" style="white-space: pre;" placeholder="Todo"></textarea>
<input class="button is-info is-rounded" type="submit" value="Add">
</div>
</form>
</div>
<span> </span>
</div>
</div>
</div>
</div>
---中略---
</template>
<script>
import ClickOutside from 'vue-click-outside' //import
export default {
name: 'ToDo',
newItem: "",
props: ["user"],
data () {
return {
todos: [],
components: [],
isActive: false //初期画面ではモーダルを表示しないためfalse
}
},
---中略---
methods: {
close: function () {
---中略---
this.isActive = !this.isActive
}
},
mounted () {
this.popupItem = this.$el //popupItemを使用して、イベントの外側をクリックしないようにする
},
directives: { //directivesオプションを使用することにより、ローカルディレクティブに登録されるため、機能を使うことができる
ClickOutside
}
---中略---
</script>
위 파일의 스크립트 내에서 vue-click-outside를 가져오면 v-click-outside="close"는 모달 창의 범위를 벗어나 클릭하여 모달을 닫는 기능을 제공할 수 있습니다.
methods 옵션 내에 있는 close 함수는 초기 data로 false로 설정한 isActive를 !isActive로, 즉 true로 변경하는 것으로 모달을 닫는 처리가 완성됩니다.
감상
실현하고 싶은 기능이 벌써 라이브러리화하고 있으면(자) 엄청 편하구나라고 몸을 가지고 실감했습니다.
자신도 가까운 장래에 도서관을 만들고 싶다 ...!
트위터 , 코멘트에 대한 피드백 기다리고 있습니다! !
Reference
이 문제에 관하여(【간단】vue-click-outside 라이브러리를 사용해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/watsuyo_2/items/25f9e56644d9948c19a4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)