조건에 따라 엘리먼트를 표시하는 디렉티브이다. v-show가 지정되면 항상 렌더링되어 DOM에 유지되며, 단순히 display css 속성을 전환하는 역할을 한다.
extarea에 메시지를 입력하지 않았을 때 제출 버튼이 표시되지 않도록 하는 간단한 예시
<html> <head> <title>v-show example</title> </head> <body> <h1>You must send a message for help!</h1> <divid="app"> <textareav-model="message"></textarea> <buttonv-show="message">Send to company for help!</button> <pre>{{ $data }}</pre> </div> </body> <scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: "#app", data: { message: "I dont wanna be Gozol Mipeel baeksoo!" } }); </script> </html>
v-if
v-show와 v-if를 바꿔도 잘 작동한다.
v-show와의 차이점은 DOM에 유지되느냐 유지되지 않느냐의 차이이다. (v-if가 지정된 엘리먼트가 유지되지 않음)
간혹 여러 엘리먼트를 한 번에 토글해야 하는 경우엔 template 엘리먼트에서 v-if를 사용하면 된다. 이를 래퍼로 사용하는 것이 가능하다. (v-show를 template에 사용하는것은 불가)
<html> <head> <title>v-if example</title> </head> <body> <divid="app"> <templatev-if="!message"> <h1>You must send a message for help!</h1> <p>Dispatch a messenger immediately!</p> </template> <textareav-model="message"></textarea> <buttonv-if="message">Send to company for help!</button> <pre>{{ $data }}</pre> </div> </body> <scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: "#app", data: { message: "" } }); </script> </html>
v-else
옆동네에서 흔히 사용하는 if-else문과 같다. v-if 뒤에 붙어 쓰여야 하며, 그렇지 않으면 동작하지 않는다.
v-show 뒤에 붙어도 동작하지 않는다.
<html> <head> <title>v-else example</title> </head> <body> <divid="app"> <h1v-if="!message">You must send a message for help!</h1> <h2v-else>You have sent a message!</h2> <textareav-model="message"></textarea> <buttonv-show="message">Send company for help!</button> </div> </body> <scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: "#app", data: { message: "I dont wanna be Gozol Mipeel baeksoo!" } }); </script> </html>