Skip to content

Commit ebeaaca

Browse files
sorae42vnphanquang
authored andcommitted
docs: translate 1-5: events
1 parent d954057 commit ebeaaca

File tree

16 files changed

+47
-46
lines changed

16 files changed

+47
-46
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
title: DOM events
2+
title: Sự kiện DOM
33
---
44

5-
As we've briefly seen already, you can listen to any DOM event on an element (such as click or [pointermove](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event)) with the `on:` directive:
5+
Như bạn đã thấy, bạn có thể lắng nghe bất kì sự kiện DOM nào trên một phần tử (chẳng hạn như một click chuột hoặc [pointermove](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event)) với `on:`:
66

77
```svelte
88
/// file: App.svelte
99
<div +++on:pointermove={handleMove}+++>
10-
The pointer is at {m.x} x {m.y}
10+
Con trỏ chuột đang ở {m.x} x {m.y}
1111
</div>
1212
```

content/tutorial/01-svelte/05-events/01-dom-events/app-a/src/lib/App.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</script>
99

1010
<div>
11-
The pointer is at {m.x} x {m.y}
11+
Con trỏ chuột đang ở {m.x} x {m.y}
1212
</div>
1313

1414
<style>

content/tutorial/01-svelte/05-events/01-dom-events/app-b/src/lib/App.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</script>
99

1010
<div on:pointermove={handleMove}>
11-
The pointer is at {m.x} x {m.y}
11+
Con trỏ chuột đang ở {m.x} x {m.y}
1212
</div>
1313

1414
<style>

content/tutorial/01-svelte/05-events/02-inline-handlers/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Inline handlers
33
---
44

5-
You can also declare event handlers inline:
5+
Bạn cũng có thể khai báo event handler trong cùng một dòng _(inline event handlers)_:
66

77
```svelte
88
/// file: App.svelte
@@ -20,8 +20,8 @@ You can also declare event handlers inline:
2020
m = { x: e.clientX, y: e.clientY };
2121
}+++}
2222
>
23-
The mouse position is {m.x} x {m.y}
23+
Con trỏ chuột đang ở {m.x} x {m.y}
2424
</div>
2525
```
2626

27-
> In some frameworks you may see recommendations to avoid inline event handlers for performance reasons, particularly inside loops. That advice doesn't apply to Svelte — the compiler will always do the right thing, whichever form you choose.
27+
> Trong một số framework thường hay có đề xuất nên tránh inline event handler để có hiệu năng tốt nhất, thường là trong các vòng lặp. Lời khuyên đó thì lại không áp dụng cho Svelte - bất kể bạn chọn cách nào, trình dịch sẽ luôn làm điều đúng đắn nhất.

content/tutorial/01-svelte/05-events/02-inline-handlers/app-b/src/lib/App.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
m = { x: e.clientX, y: e.clientY };
88
}}
99
>
10-
The pointer is at {m.x} x {m.y}
10+
Con trỏ chuột đang ở {m.x} x {m.y}
1111
</div>
1212

1313
<style>
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
---
2-
title: Event modifiers
2+
title: Modifier trong sự kiện
33
---
44

5-
DOM event handlers can have _modifiers_ that alter their behaviour. For example, a handler with a `once` modifier will only run a single time:
5+
DOM event handler có thể có _modifier_ để thay đổi hành vi của nó. Chẳng hạn như một handler với modifier `once` sẽ làm cho nó chạy đúng _một lần_:
66

77
```svelte
88
/// file: App.svelte
9-
<button on:click+++|once+++={() => alert('clicked')}>
10-
Click me
9+
<button on:click+++|once+++={() => alert('đã bấm')}>
10+
Bấm vào tôi
1111
</button>
1212
```
1313

14-
The full list of modifiers:
14+
Dưới đây là đầy đủ danh sách các modifier:
1515

16-
- `preventDefault`calls `event.preventDefault()` before running the handler. Useful for client-side form handling, for example.
17-
- `stopPropagation`calls `event.stopPropagation()`, preventing the event reaching the next element
18-
- `passive` — improves scrolling performance on touch/wheel events (Svelte will add it automatically where it's safe to do so)
19-
- `nonpassive`explicitly set `passive: false`
20-
- `capture` — fires the handler during the [_capture_](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_capture) phase instead of the [_bubbling_](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_bubbling) phase
21-
- `once`remove the handler after the first time it runs
22-
- `self`only trigger handler if event.target is the element itself
23-
- `trusted` — only trigger handler if `event.isTrusted` is `true`, meaning the event was triggered by a user action rather than because some JavaScript called `element.dispatchEvent(...)`
16+
- `preventDefault`gọi `event.preventDefault()` trước khi chạy handler. Hữu ích cho việc xử lý form.
17+
- `stopPropagation`gọi `event.stopPropagation()`, tránh sự kiện với tới phần tử kế tiếp.
18+
- `passive` - tăng hiệu năng cho việc cuộn trang trên các sự kiện chạm/lăn chuột (Svelte sẽ tự động thêm khi chỗ đó có thể thêm được).
19+
- `nonpassive`buộc đặt `passive: false`.
20+
- `capture` - chạy handler trong giai đoạn [_capture_](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_capture) thay vì giai đoạn [_bubbling_](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_bubbling).
21+
- `once`bỏ kích hoạt handler sau khi chạy lần đầu tiên.
22+
- `self`chỉ chạy handler khi `event.target` là phần tử chính nó.
23+
- `trusted` - chỉ chạy handler khi `event.isTrusted` `true`, tức là sự kiện chỉ có thể kích hoạt bởi thao tác từ người dùng thay vì được gọi từ JavaScript bằng `element.dispatchEvent(...)`.
2424

25-
You can chain modifiers together, e.g. `on:click|once|capture={...}`.
25+
Bạn có thể chồng các modifier lên, ví dụ như `on:click|once|capture={...}`.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<button on:click={() => alert('clicked')}>
2-
Click me
1+
<button on:click={() => alert('đã bấm')}>
2+
Bấm vào tôi
33
</button>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<button on:click|once={() => alert('clicked')}>
2-
Click me
1+
<button on:click|once={() => alert('đã bấm')}>
2+
Bấm vào tôi
33
</button>
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
2-
title: Component events
2+
title: Sự kiện trong component
33
---
44

5-
Components can also dispatch events. To do so, they must create an event dispatcher. Update `Inner.svelte`:
5+
Component cũng có thể phái _(dispatch)_ các sự kiện. Bạn cần phải tạo một _event dispatcher_ để có thể làm điều này.
66

77
```svelte
88
/// file: Inner.svelte
@@ -13,19 +13,19 @@ Components can also dispatch events. To do so, they must create an event dispatc
1313
1414
function sayHello() {
1515
dispatch('message', {
16-
text: 'Hello!'
16+
text: 'Xin chào!'
1717
});
1818
}
1919
</script>
2020
```
2121

22-
> `createEventDispatcher` must be called when the component is first instantiated — you can't do it later inside e.g. a `setTimeout` callback. This links `dispatch` to the component instance.
22+
> Bạn phải gọi `createEventDispatcher` khi component được khởi tạo lần đầu - bạn không thể chúng gọi sau này, chẳng hạn như trong callback của `setTimeout`. Việc này sẽ liên kết `dispatch` với instance của component.
2323
24-
Then, add an `on:message` handler in `App.svelte`:
24+
Sau đó, thêm handler `on:message` vào `App.svelte`:
2525

2626
```svelte
2727
/// file: App.svelte
2828
<Inner +++on:message={handleMessage}+++ />
2929
```
3030

31-
> You can also try changing the event name to something else. For instance, change `dispatch('message', {...})` to `dispatch('greet', {...})` in `Inner.svelte` and change the attribute name from `on:message` to `on:greet` in `App.svelte`.
31+
> Bạn cũng có thể thay đổi tên sự kiện thành thứ khác. Chẳng hạn như thay đổi `dispatch('message', {...})` thành `dispatch('greet', {...})` trong `Inner.svelte` và thay đổi tên attribute từ `on:message` thành `on:greet` trong `App.svelte`.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script>
22
function sayHello() {
33
dispatch('message', {
4-
text: 'Hello!'
4+
text: 'Xin chào!'
55
});
66
}
77
</script>
88

99
<button on:click={sayHello}>
10-
Click to say hello
10+
Bấm để nói Xin chào
1111
</button>

content/tutorial/01-svelte/05-events/04-component-events/app-b/src/lib/Inner.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
66
function sayHello() {
77
dispatch('message', {
8-
text: 'Hello!'
8+
text: 'Xin chào!'
99
});
1010
}
1111
</script>
1212

1313
<button on:click={sayHello}>
14-
Click to say hello
14+
Bấm để nói Xin chào
1515
</button>

content/tutorial/01-svelte/05-events/05-event-forwarding/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
title: Event forwarding
33
---
44

5-
Unlike DOM events, component events don't _bubble_. If you want to listen to an event on some deeply nested component, the intermediate components must _forward_ the event.
5+
<!-- FIXME: Need link for "bubble" -->
6+
Không như DOM event, component events không _bubble_. Nếu bạn muốn lắng nghe một sự kiện trên component được lồng sâu bên trong, component trung gian đó phải đẩy _(forward)_ sự kiện đó.
67

7-
In this case, we have the same `App.svelte` and `Inner.svelte` as in the [previous chapter](/tutorial/component-events), but there's now an `Outer.svelte` component that contains `<Inner/>`.
8+
Trong trường hợp này, chúng ta có `App.svelte` `Inner.svelte` trong [phần trước](/tutorial/component-events), và bây giờ ta có component `Outer.svelte` bao gồm `<Inner/>`.
89

9-
One way we _could_ solve the problem is adding `createEventDispatcher` to `Outer.svelte`, listening for the `message` event, and creating a handler for it:
10+
Một cách mà ta _có thể_ giải là thêm `createEventDispatcher` vào `Outer.svelte`, _nghe_ sự kiện `message`, và tạo một handler cho nó:
1011

1112
```svelte
1213
/// file: Outer.svelte
@@ -24,7 +25,7 @@ One way we _could_ solve the problem is adding `createEventDispatcher` to `Outer
2425
<Inner on:message={forward}/>
2526
```
2627

27-
But that's a lot of code to write, so Svelte gives us an equivalent shorthand — an `on:message` event directive without a value means 'forward all `message` events'.
28+
Nhưng bạn phải viết khá nhiều code cho việc này, cho nên Svelte có một cách viết tắt - một event `on:message` mà không có giá trị thì nó có nghĩa là "forward tất cả sự kiện có tên `message`".
2829

2930
```svelte
3031
/// file: Outer.svelte

content/tutorial/01-svelte/05-events/06-dom-event-forwarding/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
title: DOM event forwarding
33
---
44

5-
Event forwarding works for DOM events too.
5+
Bạn cũng có thể forward sự kiện cho DOM event luôn.
66

7-
We want to get notified of clicks on our `<BigRedButton>` — to do that, we just need to forward `click` events on the `<button>` element in `BigRedButton.svelte`:
7+
Để được thông báo khi bấm nút `<BigRedButton>` - ta chỉ cần forward sự kiện `click` trên phần tử `<button>` ở trong `BigRedButton.svelte`:
88

99
```svelte
1010
/// file: BigRedButton.svelte

content/tutorial/01-svelte/05-events/06-dom-event-forwarding/app-a/src/lib/BigRedButton.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<button>
2-
Push
2+
Bấm
33
</button>
44

55
<style>

content/tutorial/01-svelte/05-events/06-dom-event-forwarding/app-b/src/lib/BigRedButton.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<button on:click>
2-
Push
2+
Bấm
33
</button>
44

55
<style>

content/tutorial/01-svelte/05-events/meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"title": "Events",
2+
"title": "Sự kiện",
33
"scope": {
44
"prefix": "/src/lib/",
55
"name": "src"

0 commit comments

Comments
 (0)