Nhu cầu phổ biến đối với liên kết dữ liệu là thao tác danh sách lớp của một phần tử và các kiểu nội tuyến của nó. Vì cả hai đều là thuộc tính nên chúng ta có thể sử dụng v-bind để xử lý chúng: chúng ta chỉ cần tính toán một chuỗi cuối cùng với các biểu thức của chúng ta. Tuy nhiên, việc can thiệp vào việc nối chuỗi rất khó chịu và dễ xảy ra lỗi. Vì lý do này, Vue cung cấp các cải tiến đặc biệt khi v-bind được sử dụng với class và style. Ngoài chuỗi, các biểu thức cũng có thể đánh giá các đối tượng hoặc mảng.
Binding HTML Classes
Trong quá trình phát triển bạn muốn thêm một class vào trong một thẻ HTML với một điều kiện nào đó xảy ra. Khi đó Vue có thể giúp bạn làm điều này rất dễ dàng.
Cú pháp dạng đối tượng
BẠn có thể chuyển một đối tượng tới v-bind: class để sử dụng động các lớp:
<template>
<div>
<h3>Class Style Binding</h3>
<div class="default" v-bind:class="{ active: isActive }">This is text</div>
</div>
</template>
<script>
export default {
name: "class-style",
data() {
return {
isActive: true,
};
},
};
</script>
<style scoped>
.active {
color: red;
}
</style>
Ta thu được
<div class="default active">This is text</div>
Ở ví dụ trên ta thấy được class active
được thêm vào, do ta dùng v-bind:class khai báo biến isActive giá trị mặc định là true với điều kiện dùng mặc định là true { active: isActive }
hoăc ta cũng có thể dùng { active: isActive == true }
. Ở phần HTML ta có đoạn text trên sẽ hiển thị màu đỏ do có class active .
Khi cần bind nhiều class thì các bạn làm như sau nhé
<div
class="static"
v-bind:class="{ active: isActive, 'text-bold': hasBold }"
></div>
Data:
data: {
isActive: true,
hasBold: true
}
Ta Thu được
<div class="default active text-bold">This is text</div>
Ta có thể truyền một object vào :class như sau:
<template>
<div>
<div class="default" :class="classObject">
This is text
</div>
</div>
</template>
<script>
export default {
data() {
return {
classObject: {
active: true,
'text-bold': true,
center: true
}
};
}
};
</script>
<style scoped></style>
Kết quả đạt được
<div class="default active text-bold center">This is text</div>
Các class được bind khi có giá trị true
Cú pháp dạng mảng
Chúng ta có thể truyền một mảng cho v-bind: class để áp dụng một danh sách các lớp:
<div v-bind:class="[activeClass, errorClass]"></div>
data
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
Kết quả thu được
<div class="active text-danger"></div>
- Bạn có chuyển đổi một lớp trong danh sách một cách có điều kiện, bạn có thể làm điều đó với biểu thức bậc ba:
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>
- Bạn cũng có thể dùng
<div v-bind:class="[{ active: isActive }, errorClass]"></div>
data
data: {
isActive:true,
activeClass: 'active',
errorClass: 'text-danger'
}
Kết quả thu được
<div class="active text-danger"></div>
Binding Inline Styles
Cú pháp đối tượng
html
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">This is text</div>
Js
data: {
activeColor: 'red',
fontSize: 30
}
Ta dùng với 1 đối tượng để gọn gàng hơn
<div v-bind:style="styleObject"></div>
JS
data: {
styleObject: {
color: "red",
fontSize: "30px"
}
}
Kết quả thu được đều như nhau
<div style="color: red; font-size: 30px;">This is text</div>
Cú pháp dạng mảng
Ta có thể dùng pháp mảng cho v-bind: style cho phép bạn áp dụng nhiều đối tượng kiểu cho cùng một phần tử:
html
<div v-bind:style="[colorRed, bgBlack]">This is text</div>
Js
data:{
colorRed:{
color:'red'
},
bgBlack:{
background:'black'
}
}
Bài này khá đơn giản giúp bạn có thể bind các thẻ HTML khi render tuỳ vào các điều kiện nhất định. Mong rằng các bạn có thể hiểu được sau đó tự mình bind theo các cách riêng của mỗi mục địch khác nhau.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chínhBinding HTML ClassesCú pháp dạng đối tượngCú pháp dạng...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chínhBinding HTML ClassesCú pháp dạng đối tượngCú pháp dạng mảngBinding Inline StylesCú pháp đối tượngCú pháp dạng mảng1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chínhBinding HTML ClassesCú pháp dạng đối tượngCú pháp dạng mảngBinding Inline StylesCú pháp đối tượngCú pháp dạng mảngV. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng...
Directory traversal vulnerabilities (phần 3)
Nội dung chínhBinding HTML ClassesCú pháp dạng đối tượngCú pháp dạng mảngBinding Inline StylesCú pháp đối tượngCú pháp dạng mảngV. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra...
Directory traversal vulnerabilities (phần 2)
Nội dung chínhBinding HTML ClassesCú pháp dạng đối tượngCú pháp dạng mảngBinding Inline StylesCú pháp đối tượngCú pháp dạng mảngIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác...