- Chuyên mục khác :
- PHP và Laravel
- ·
- Database - Git - Linux
- ·
- Vuejs
- ·
- Lập Trình Web
- Getting Started
- Vue.js là gì?
- Các cách sử dụng Vue khác nhau
- Khám phá các lựa chọn thay thế Vue
- Xây dựng ứng dụng đầu tiên chỉ bằng JavaScript
- Xây dựng lại ứng dụng với Vue
- Basics & Core Concepts - DOM Interaction with Vue
- Module Introduction
- Connecting Vue App Instances
- Interpolation và Data Binding
- Binding Attributes với v-bind Directive
- Understanding methods in Vue Apps
- Working with Data inside of a Vue App
- Outputting Raw HTML Content with v-html
- Event Binding v-on
- Events & Methods
- Using the Native Event Object
- Event Modifiers
- Two-Way Binding
- Methods used for Data Binding
- Computed Properties
- Working with Watchers
- Methods vs Computed Properties vs Watchers
- v-bind and v-on Shorthands
- Dynamic Styling with Inline Styles
- CSS Classes Dynamically
- Rendering Conditional Content & Lists
- Conditions & Lists Starting-Setup
- v-if, v-else and v-else-if
- v-show
- Rendering Lists of Data
- Vue Behind The Scenes
- Understand Vue Reactivity
- Understanding Templates
- Working with Refs
- How Vue Updates the DOM
- Vue App Lifecycle
- Components
- Workflow with Vue3 CLI
- Vue Initial Steps & Structure
- Inspecting the Vue Project
- Vue extentions
- Vue Component
- Props
- $emit and Listening to Events
- Method of array object in JavaScript
- Provide + Inject
- Global vs Local Components
- Scoped Styles
- Slots
- Dynamic Components and Keeping Dynamic Components Alive
- Teleporting Elements
- Fragments
- The Vue Style Guide
Ở bài trước mình đang xử lý logic count number trong mã HTML của mình và nó nằm trong phần điều kiển của Vue nhưng trong mã HTML, nếu chúng ta làm theo cách này nó là một phương pháp không tốt, không tối ưu.
<section id="event">
<button v-on="count++">Add</button>
<button v-on:click="count = count - 1">Reduce</button>
<p>Count: {{ count }}</p>
</section>
Bạn không muốn đặt quá nhiều logic vào mã HTML của mình. Thay vào đó, mã HTML thực sự chỉ nên dùng để xuất nội dung. Logic như thế này, mặc dù nó không quá phức tạp, nhưng thường sẽ được xử lý trong Vue.
Bây giờ làm thế nào chúng ta có thể đưa logic này vào trong Vue? Bài này sẽ giúp các bạn kết hợp Event binding và methods để chúng ta có thể giải quyết vấn đề này để nó trở nên tối ưu hơn.
Chúng ta sẽ sửa đoạn code thành như sau:
Thêm 2 hàm "add" và "reduce" trong trong đối tượng methods, và chúng ta sẽ xử lý logic trong 2 hàm này, sau đó gọi 2 hàm này trong directive v-on.
const app = Vue.createApp({
data() {
return {
count: 0
}
},
methods: {
add() {
this.count = this.count + 1;
},
reduce() {
this.count = this.count - 1;
}
},
})
app.mount('#event');
<section id="event">
<button v-on:click="add">Add</button>
<button v-on:click="reduce">Reduce</button>
<p>Count: {{ count }}</p>
</section>
Bằng cách này, khi sự kiện click được kích hoạt, Vue.js sẽ gọi phương thức "add" đã được định nghĩa trong phần methods của Vue instance. Điều này giúp cho mã nguồn của bạn trở nên gọn gàng và dễ bảo trì.
Có thể bạn chưa biết , chúng ta có thể gọi tên phương thức trong directive v-on bằng 2 cách:
<section id="event">
<button v-on:click="add">Add</button>
<button v-on:click="reduce">Reduce</button>
<p>Count: {{ count }}</p>
</section>
Hoặc:
<section id="event">
<button v-on:click="add()">Add</button>
<button v-on:click="reduce()">Reduce</button>
<p>Count: {{ count }}</p>
</section>
Ở ví dụ trên chúng ta không truyền tham (paramaters) số vào hàm, vậy trong trường hợp nếu chúng ta cần truyền tham số thì chúng ta sẽ phải làm như thế nào?
Dưới đây là cách truyền tham số vào các phương thức xử lý sự kiện trong Vue.js:
<button @click="handleClick('parameter')">Click here</button>
Trong ví dụ này, 'parameter' là tham số được truyền vào phương thức handleClick khi sự kiện click xảy ra.
Trong phần methods của Vue instance, phương thức handleClick có thể nhận tham số như sau:
new Vue({
el: '#app',
data: {
// Dữ liệu của Vue instance
},
methods: {
handleClick(parameter) {
// Xử lý khi click vào nút, sử dụng tham số parameter
console.log(parameter); // parameter sẽ là 'parameter'
}
}
});
Trong Vue.js, ngoài việc truyền tham số trực tiếp vào các phương thức xử lý sự kiện, bạn cũng có thể sử dụng các biến hoặc thuộc tính đã được định nghĩa trong dữ liệu của Vue instance. Điều này giúp bạn truy cập và sử dụng dữ liệu trong các phương thức của bạn một cách linh hoạt.
Dưới đây là một ví dụ về cách sử dụng các biến hoặc thuộc tính trong phương thức xử lý sự kiện trong Vue.js:
<button @click="handleClick">Click here</button>
new Vue({
el: '#app',
data: {
// Dữ liệu của Vue instance
parameter: 'parameter from data'
},
methods: {
handleClick() {
//Xử lý khi click vào nút, sử dụng tham số parameter
console.log(parameter); // parameter sẽ là 'parameter'
}
}
});
Bình luận (0)