Chỉ thị Vue v-if
Việc tạo một phần tử HTML tùy thuộc vào một điều kiện trong Vue bằng lệnh v-if
sẽ dễ dàng hơn rất nhiều so với JavaScript đơn giản.
Với Vue, bạn chỉ cần viết câu lệnh if trực tiếp vào phần tử HTML mà bạn muốn tạo có điều kiện. Nó đơn giản mà.
Kết xuất có điều kiện trong Vue
Kết xuất có điều kiện trong Vue được thực hiện bằng cách sử dụng các lệnh v-if
, v-else-if
và v-else
.
Hiển thị có điều kiện là khi phần tử HTML chỉ được tạo nếu điều kiện là đúng, tức là tạo văn bản "Còn hàng" nếu một biến là 'true' hoặc 'Không còn hàng' nếu biến đó là 'sai'.
Ví dụ
Viết các tin nhắn khác nhau tùy thuộc vào việc có máy đánh chữ trong kho hay không:
<p v-if="typewritersInStock">
in stock
</p>
<p v-else>
not in stock
</p>
Hãy tự mình thử »Điều kiện trong Vue
Điều kiện hay "câu lệnh if" là điều gì đó true
hoặc false
.
Một điều kiện thường là sự kiểm tra so sánh giữa hai giá trị như trong ví dụ trên để xem liệu giá trị này có lớn hơn giá trị kia hay không.
Chúng tôi sử dụng các toán tử so sánh như
<
,>=
hoặc!==
để thực hiện các kiểm tra như vậy.Kiểm tra so sánh cũng có thể được kết hợp với các toán tử logic như
&&
hoặc||
.Hãy truy cập trang hướng dẫn JavaScript của chúng tôi để tìm hiểu thêm về cách so sánh JavaScript.
Chúng ta có thể sử dụng số lượng máy đánh chữ trong kho bằng cách kiểm tra so sánh để quyết định xem chúng còn hàng hay không:
Ví dụ
Sử dụng kiểm tra so sánh để quyết định nên viết "Còn hàng" hay "Không còn hàng" tùy thuộc vào số lượng máy đánh chữ trong kho.
<p v-if="typewriterCount > 0">
in stock
</p>
<p v-else>
not in stock
</p>
Hãy tự mình thử »Chỉ thị về kết xuất có điều kiện
Tổng quan này mô tả cách sử dụng cùng nhau các lệnh Vue khác nhau được sử dụng để hiển thị có điều kiện.
chỉ thị | Chi tiết |
---|---|
v-if | Có thể được sử dụng một mình hoặc với v-else-if và/hoặc v-else . Nếu điều kiện bên trong v-if là 'true' thì v-else-if hoặc v-else không được xem xét. |
v-else-if | Phải được sử dụng sau v-if hoặc v-else-if khác. Nếu điều kiện bên trong v-else-if là 'true' thì v-else-if hoặc v-else theo sau không được xem xét. |
v-else | Phần này sẽ xảy ra nếu phần đầu tiên của câu lệnh if sai. Phải được đặt ở cuối câu lệnh if, sau v-if và v-else-if . |
Để xem một ví dụ có cả ba lệnh được hiển thị ở trên, chúng ta có thể mở rộng ví dụ trước bằng v-else-if
để người dùng thấy 'Còn hàng', 'Còn rất ít!' hoặc 'Hết hàng':
Ví dụ
Sử dụng kiểm tra so sánh để quyết định có nên viết "Còn hàng", "Còn rất ít!" hoặc “Không có hàng” tùy theo số lượng máy chữ trong kho.
<p v-if="typewriterCount>3">
In stock
</p>
<p v-else-if="typewriterCount>0">
Very few left!
</p>
<p v-else>
Not in stock
</p>
Hãy tự mình thử »Sử dụng Giá trị trả về từ một hàm
Thay vì sử dụng kiểm tra so sánh bằng lệnh v-if
, chúng ta có thể sử dụng giá trị trả về 'true' hoặc 'false' từ một hàm:
Ví dụ
Nếu một văn bản nhất định có chứa từ 'pizza', hãy tạo thẻ <p> với thông điệp thích hợp. Phương thức 'includes()' là một phương thức JavaScript gốc để kiểm tra xem văn bản có chứa một số từ nhất định hay không.
<div id="app">
<p v-if="text.includes('pizza')">The text includes the word 'pizza'</p>
<p v-else>The word 'pizza' is not found in the text</p>
</div>
data() {
return {
text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
}
}
Hãy tự mình thử » Ví dụ trên có thể được mở rộng để cho thấy rằng v-if
cũng có thể tạo các thẻ khác như thẻ <div> và <img>:
Ví dụ
Nếu một văn bản nhất định chứa từ 'pizza', hãy tạo thẻ <div> có hình ảnh pizza và thẻ <p> có thông báo. Phương thức 'includes()' là một phương thức JavaScript gốc để kiểm tra xem văn bản có chứa một số từ nhất định hay không.
<div id="app">
<div v-if="text.includes('pizza')">
<p>The text includes the word 'pizza'</p>
<img src="img_pizza.svg">
</div>
<p v-else>The word 'pizza' is not found in the text</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
}
}
})
app.mount('#app')
</script>
Hãy tự mình thử »Dưới đây ví dụ được mở rộng hơn nữa.
Ví dụ
Nếu một văn bản nhất định chứa từ 'pizza' hoặc 'burrito' hoặc không có từ nào trong số này, các hình ảnh và văn bản khác nhau sẽ được tạo.
<div id="app">
<div v-if="text.includes('pizza')">
<p>The text includes the word 'pizza'</p>
<img src="img_pizza.svg">
</div>
<div v-else-if="text.includes('burrito')">
<p>The text includes the word 'burrito', but not 'pizza'</p>
<img src="img_burrito.svg">
</div>
<p v-else>The words 'pizza' or 'burrito' are not found in the text</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
}
}
})
app.mount('#app')
</script>
Hãy tự mình thử »Với Vue giờ đây chúng ta có thể viết mã tạo các phần tử trong các điều kiện nhất định theo cách dễ dàng hơn nhiều so với JavaScript truyền thống.