Skip to content

Commit 93f6bcd

Browse files
committed
Merge remote-tracking branch 'upstream/master'
# Conflicts: # src/v2/guide/events.md # src/v2/guide/filters.md # src/v2/guide/installation.md # src/v2/guide/list.md # src/v2/guide/mixins.md # src/v2/guide/team.md
2 parents 6d27b9d + 54e70b6 commit 93f6bcd

File tree

9 files changed

+64
-16
lines changed

9 files changed

+64
-16
lines changed

pre-deploy.js

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Promise.all([
3939
installation
4040
.replace(/vue_version: .*/, 'vue_version: ' + version)
4141
.replace(/gz_size:.*/g, `gz_size: "${prodSize}"`)
42+
.replace(/\/vue@[\d\.]+\//g, `/vue@${version}/`)
4243
)
4344
console.log(`\nSuccessfully updated Vue version and gzip file size.\n`)
4445
}).catch(err => {

src/v2/api/index.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ type: api
327327
var myFilter = Vue.filter('my-filter')
328328
```
329329

330+
- **See also:** [Filters](../guide/filters.html)
331+
330332
### Vue.component( id, [definition] )
331333

332334
- **Arguments:**
@@ -792,11 +794,9 @@ type: api
792794
793795
- **Details:**
794796
795-
Called when the data changes, before the virtual DOM is re-rendered and patched.
796-
797-
You can perform further state changes in this hook and they will not trigger additional re-renders.
797+
Called when data changes, before the DOM is patched. This is a good place to access the existing DOM before an update, e.g. to remove manually added event listeners.
798798
799-
**This hook is not called during server-side rendering.**
799+
**This hook is not called during server-side rendering, because only the initial render is performed server-side.**
800800
801801
- **See also:** [Lifecycle Diagram](../guide/instance.html#Lifecycle-Diagram)
802802

src/v2/examples/tree-view.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ order: 4
66

77
> Ví dụ về hiển thị một danh sách dạng cây đơn giản bằng cách sử dụng component đệ quy.
88
9-
<iframe width="100%" height="500" src="https://jsfiddle.net/yyx990803/3p0j5sgy/embedded/result,html,js,css" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
9+
<iframe width="100%" height="500" src="https://jsfiddle.net/chrisvfritz/pnqzspoe/embedded/result,html,js,css" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

src/v2/guide/events.md

+9-4
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,19 @@ Không như các modifier khác, vốn chỉ dùng được cho các sự kiện
220220

221221
> Từ phiên bản 2.3.0 trở đi
222222
223-
``` html
224-
<!-- sự kiện scroll sẽ không chặn hành vi scroll mặc định -->
223+
Vue cũng cung cấp modifier `.passive`, tương ứng với [tùy chọn `passive` cho `addEventListener`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Parameters).
224+
225+
```html
226+
<!--
227+
hành vi mặc định của sự kiện scroll (cuộn trang) sẽ xảy ra
228+
ngay lập tức, thay vì đợi `onScroll` hoàn tất.
229+
-->
225230
<div v-on:scroll.passive="onScroll">...</div>
226231
```
227232

228-
Ngoài những modifier kể trên, Vue còn cung cấp thêm modifier `.passive` để cải thiện hiệu năng, nhất là trên nền tảng di động. Ví dụ, khi thực hiện cuộn trang (scroll), trình duyệt sẽ chỉ cuộn sau khi hàm xử lí được hoàn tất, vì trình duyệt không biết sự kiện có gọi `event.preventDefault()` để chặn hành vi mặc định bên trong hàm xử lí hay không. Chúng ta có thể dùng modifier `.passive` để thông báo trước cho trình duyệt biết rằng sự kiện sẽ không chặn hành vi mặc định.
233+
Modifier `.passive` đặc biệt hữu ích để cải thiện hiệu năng của ứng dụng trên các thiết bị di động.
229234

230-
<p class="tip">Đừng dùng `.passive` và `.prevent` chung với nhau, vì `.passive` không thể chặn sự kiện mặc định.</p>
235+
<p class="tip">Đừng dùng `.passive` và `.prevent` cùng nhau, vì `.prevent` sẽ không có hiệu lực, và trình duyệt có thể sẽ bật cảnh báo. Nên nhớ rằng `.passive` thông báo cho trình duyệt biết rằng bạn _không muốn_ ngăn chặn hành vi mặc định của sự kiện.</p>
231236

232237
## Key modifier
233238

src/v2/guide/filters.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ filters: {
2727
}
2828
```
2929

30-
hoặc định nghĩa ở cấp toàn cục:
30+
hoặc định nghĩa ở cấp toàn cục trước khi khởi tạo một đối tượng Vue:
3131

3232
``` js
3333
/** Viết hoa chữ đầu tiên */
@@ -36,6 +36,10 @@ Vue.filter('capitalize', function (value) {
3636
value = value.toString()
3737
return value.charAt(0).toUpperCase() + value.slice(1)
3838
})
39+
40+
new Vue({
41+
// ...
42+
})
3943
```
4044

4145
Sau đây là một ví dụ sử dụng filter `capitalize` trên:

src/v2/guide/installation.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,18 @@ Chỉ cần tải file thư viện về rồi sử dụng nó trong thẻ script
3434

3535
### CDN
3636

37-
Nên dùng: [https://cdn.jsdelivr.net/npm/vue](https://cdn.jsdelivr.net/npm/vue), nó sẽ trỏ tới bản mới nhất của Vue trên npm. Bạn có thể xem mã nguồn của package trên npm tại [https://cdn.jsdelivr.net/npm/vue/](https://cdn.jsdelivr.net/npm/vue/).
37+
Chúng tôi khuyến khích trỏ đến một phiên bản cụ thể mà bạn có thể tự thay đổi nếu cần:
38+
39+
``` html
40+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
41+
```
42+
43+
Bạn có thể xem mã nguồn của package trên npm tại [https://cdn.jsdelivr.net/npm/vue/](https://cdn.jsdelivr.net/npm/vue/).
3844

3945
Ngoài ra, bạn cũng có thể sử dụng [unpkg](https://unpkg.com/vue) hoặc [cdnjs](https://cdnjs.cloudflare.com/ajax/libs/vue/{{vue_version}}/vue.js) (cdnjs cần nhiều thời gian để đồng bộ nên có thể nó chưa phải phiên bản mới nhất).
4046

47+
Nhớ đọc thêm về [các bản build khác nhau của Vue](#giai-thich-ve-cac-ban-build) và sử dụng bản Vue production khi publish bản production cho trang web hoặc app của bạn, thay `vue.js` bằng `vue.min.js`. Đây là bản nhỏ hơn, được tối ưu về tốc độ.
48+
4149
## NPM
4250

4351
Chúng tôi khuyên bạn nên sử dụng NPM khi muốn xây dựng một ứng dụng lớn với Vue. NPM hoạt động rất tốt với các module bundler (các công cụ đóng gói module) như [Webpack](https://webpack.js.org/) hoặc [Browserify](http://browserify.org/). Vue cũng cung cấp công cụ hỗ trợ để viết các [single file component](single-file-components.html).

src/v2/guide/list.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -331,13 +331,13 @@ Vue.set(vm.userProfile, 'age', 800)
331331
Bạn cũng có thể dùng phương thức đối tượng (instance method) `vm.$set`, một alias cho phương thức toàn cục `Vue.set`:
332332

333333
``` js
334-
vm.$set(this.userProfile, 'age', 800)
334+
vm.$set(vm.userProfile, 'age', 800)
335335
```
336336

337337
Đôi khi bạn cũng muốn thêm vài thuộc tính cùng lúc vào một object có sẵn, sử dụng `Object.assign()` hoặc `_.extend()`. Trong những trường hợp này, nên tạo một object mới với các thuộc tính từ hai object kia. Có nghĩa là thay vì:
338338

339339
``` js
340-
Object.assign(this.userProfile, {
340+
Object.assign(vm.userProfile, {
341341
age: 800,
342342
favoriteColor: 'Tím mộng mơ'
343343
})
@@ -346,7 +346,7 @@ Object.assign(this.userProfile, {
346346
bạn sẽ thêm thuộc tính reactive mới bằng như sau:
347347

348348
``` js
349-
this.userProfile = Object.assign({}, this.userProfile, {
349+
vm.userProfile = Object.assign({}, vm.userProfile, {
350350
age: 800,
351351
favoriteColor: 'Tím mộng mơ'
352352
})

src/v2/guide/mixins.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,36 @@ var component = new Component() // => "Mixin xin chào!"
3333

3434
## Hợp nhất các tùy chọn
3535

36-
Khi một mixin và component chứa những tùy chọn trùng nhau, những tùy chọn này sẽ được merge (hợp nhất) bằng cách sử dụng các chiến lược thích hợp. Ví dụ, những hàm hook trùng tên với nhau được merge vào trong một mảng để tất cả những hàm hook đó đều được gọi. Thêm vào đó, những hook trong mixin sẽ được gọi **trước** những hook trong component:
36+
Khi một mixin và component chứa những tùy chọn trùng nhau, những tùy chọn này sẽ được merge (hợp nhất) bằng cách sử dụng các chiến lược thích hợp.
37+
38+
Ví dụ, những object `data` sẽ được merge sâu một cấp (shallow merge), và khi có xung đột thì data của component sẽ được ưu tiên.
39+
40+
``` js
41+
var mixin = {
42+
data: function () {
43+
return {
44+
message: 'chào anh',
45+
foo: 'abc'
46+
}
47+
}
48+
}
49+
50+
new Vue({
51+
mixins: [mixin],
52+
data: function () {
53+
return {
54+
message: 'chào chị',
55+
bar: 'def'
56+
}
57+
},
58+
created: function () {
59+
console.log(this.$data)
60+
// => { message: "chào chị", foo: "abc", bar: "def" }
61+
}
62+
})
63+
```
64+
65+
Những hàm hook trùng tên với nhau được merge vào trong một mảng để tất cả những hàm hook đó đều được gọi. Thêm vào đó, những hook trong mixin sẽ được gọi **trước** những hook trong component:
3766

3867
``` js
3968
var mixin = {

src/v2/guide/team.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ order: 803
197197
'Annecy, Pháp': [45.899247, 6.129384],
198198
'Alicante, Tây Ban Nha' : [38.346543, -0.483838],
199199
'Bangalore, Ấn Độ': [12.971599, 77.594563],
200+
'Bắc Kinh, Trung Quốc': [39.904200, 116.407396],
200201
'Bordeaux, Pháp': [44.837789, -0.579180],
201202
'Bucharest, Romania': [44.426767, 26.102538],
202203
'Chengdu, Trung Quốc': [30.572815, 104.066801],
@@ -600,7 +601,7 @@ order: 803
600601
{
601602
name: 'kingwl',
602603
title: 'New Bee',
603-
city: 'Beijin, China',
604+
city: 'Bắc Kinh, Trung Quốc',
604605
languages: ['zh'],
605606
work: {
606607
role: 'Software Development Engineer',

0 commit comments

Comments
 (0)