Skip to content

Commit f0ce8ec

Browse files
committed
Merge branch 'cuiyongjian-2.0-cn' into 2.0-cn
* cuiyongjian-2.0-cn: fix componetns.md # Conflicts: # src/guide/components.md
2 parents ce939f1 + 3ca8dca commit f0ce8ec

File tree

1 file changed

+29
-28
lines changed

1 file changed

+29
-28
lines changed

src/guide/components.md

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Vue.component('my-component', {
2929
})
3030
```
3131

32-
<p class="tip">对于自定义标签名字, Vue.js 不强制要求遵循 W3C 规则(小写,并且包含一个短杠),尽管遵循这个规则比较好。</p>
32+
<p class="tip">对于自定义标签名,Vue.js 不强制要求遵循 [W3C规则](https://www.w3.org/TR/custom-elements/#concepts) (小写,并且包含一个短杠),尽管遵循这个规则比较好。</p>
3333

3434
组件在注册之后,便可以在父实例的模块中以自定义元素 `<my-component></my-component>` 的形式使用。要确保在初始化根实例 **之前** 注册了组件:
3535

@@ -83,7 +83,7 @@ var Child = {
8383
new Vue({
8484
// ...
8585
components: {
86-
// <my-component> will only be available in parent's template
86+
// <my-component> 将只在父模板可用
8787
'my-component': Child
8888
}
8989
})
@@ -228,16 +228,16 @@ new Vue({
228228

229229
### 使用Props传递数据
230230

231-
**组件实例的作用域是孤立的**。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。
231+
组件实例的作用域是**孤立的**。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。
232232

233-
prop 是父组件用来传递消息的一个自定义属性。子组件需要显式地用 [`props` 选项](/api/#props) 声明 props
233+
prop 是父组件用来传递数据的一个自定义属性。子组件需要显式地用 [`props` 选项](/api/#props) 声明 “prop”
234234

235235
``` js
236236
Vue.component('child', {
237237
// 声明 props
238238
props: ['message'],
239-
 // 就像 data 一样 prop 也可以用在模板内
240-
// and is also made available in the vm as this.message
239+
// 就像 data 一样, prop 可以用在模板内
240+
// 同样也可以在 vm 实例中像 “this.message” 这样使用
241241
template: '<span>{{ message }}</span>'
242242
})
243243
```
@@ -333,7 +333,7 @@ new Vue({
333333
初学者常犯的一个错误是使用字面量语法传递数值:
334334

335335
``` html
336-
<!-- 传递一个字符串"1" -->
336+
<!-- 传递了一个字符串"1" -->
337337
<comp some-prop="1"></comp>
338338
```
339339

@@ -346,9 +346,9 @@ new Vue({
346346

347347
### 单向数据流
348348

349-
prop 是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解
349+
prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解.
350350

351-
另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你不应该在子组件内部改变 prop 。如果你这么做了, Vue 会在控制台给出警告。
351+
另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你**不应该**在子组件内部改变 prop 。如果你这么做了,Vue 会在控制台给出警告。
352352

353353
通常有两种改变 prop 的情况:
354354

@@ -362,18 +362,18 @@ prop 是单向绑定:当父组件的属性变化时,将传导给子组件,
362362

363363
2. 定义一个基于 prop 值的计算属性。
364364

365-
<p class="tip">注意在 JavaScript 中对象和数组是通过引用传递的,如果 prop 是一个对象或数组,在子组件内部改变它**会**影响父组件的状态。</p>
365+
<p class="tip">注意在 JavaScript 中对象和数组是通过引用传递的,如果 prop 是一个对象或数组,在子组件内部改变它**会影响**父组件的状态。</p>
366366

367367
### Prop 验证
368368

369-
组件可以为 props 指定验证要求。如果某个验证未被满足, Vue 会发出警告。当组件给其他人使用时这很有用。
369+
组件可以为 props 指定验证要求。如果未指定验证要求,Vue会发出警告。当组件给其他人使用时这很有用。
370370

371371
prop 是一个对象而不是字符串数组时,它包含验证要求:
372372

373373
``` js
374374
Vue.component('example', {
375375
props: {
376-
// 基础类型检测 (`null` 意思是任何类型都可以)
376+
// 基础类型检测 `null` 意思是任何类型都可以
377377
propA: Number,
378378
// 多种类型
379379
propB: [String, Number],
@@ -504,7 +504,7 @@ new Vue({
504504
</script>
505505
{% endraw %}
506506

507-
在本例中,子组件仍然和它外部完全解耦合了。它所做的只是将父组件可能会关心的发生在它内部的事情告知给父组件了
507+
在本例中,子组件已经和它外部完全解耦了。它所做的只是触发一个父组件关心的内部事件
508508

509509
#### 给组件绑定原生事件
510510

@@ -516,7 +516,7 @@ new Vue({
516516

517517
### 使用自定义事件的表单输入组件
518518

519-
也可以用 `v-model` 来创建自定义表单输入。记住:
519+
自定义事件也可以用来创建自定义的表单输入组件,使用 `v-model` 来进行数据双向绑定。记住,表单控件进行数据绑定时的语法
520520

521521
``` html
522522
<input v-model="something">
@@ -528,7 +528,7 @@ new Vue({
528528
<input v-bind:value="something" v-on:input="something = $event.target.value">
529529
```
530530

531-
在组件中使用时,它相当于下面的简写:
531+
所以在组件中使用时, 它相当于下面的简写:
532532

533533
``` html
534534
<input v-bind:value="something" v-on:input="something = arguments[0]">
@@ -617,7 +617,7 @@ new Vue({
617617
</script>
618618
{% endraw %}
619619

620-
这个接口不仅仅可以用来联系组件内部的表单输入,也很容易集成你自己写的输入类型。想象一下:
620+
这个接口不仅仅可以用来连接组件内部的表单输入,也很容易集成你自己创造的输入类型。想象一下:
621621

622622
``` html
623623
<voice-recognizer v-model="question"></voice-recognizer>
@@ -633,11 +633,12 @@ new Vue({
633633
var bus = new Vue()
634634
```
635635
``` js
636-
// 组件 A 的方法
636+
// 触发组件 A 中的事件
637637
bus.$emit('id-selected', 1)
638638
```
639639
``` js
640-
// 组件 B 创建的钩子
640+
// 在组件 B 创建的钩子中监听事件
641+
>>>>>>> cuiyongjian-2.0-cn
641642
bus.$on('id-selected', function (id) {
642643
// ...
643644
})
@@ -705,7 +706,7 @@ Vue.component('child-component', {
705706

706707
### 单个 Slot
707708

708-
父组件的内容将被**抛弃**,除非子组件模板包含 `<slot>` 。如果子组件模板只有一个没有特性的 slot ,父组件的整个内容将插到 slot 所在的地方并替换它
709+
父组件的内容将被**抛弃**,除非子组件模板包含 `<slot>` 。如果子组件模板只有一个没有特性的 slot,父组件整个内容片段 将插到 slot 所在的 DOM 位置并替换掉 slot 标签
709710

710711
`<slot>` 标签的内容视为**回退内容**。回退内容在子组件的作用域内编译,当宿主元素为空并且没有内容供插入时显示这个回退内容。
711712

@@ -938,7 +939,7 @@ Vue.component(
938939

939940
### 组件命名约定
940941

941-
当定义组件时(或者 props ),可以使用 kebab-case , camelCase 或 TitleCase 。 Vue 不关心这个。
942+
当注册组件时(或者 props ,可以使用 kebab-case ,camelCase 或 TitleCase 。Vue 不关心这个。
942943

943944
``` js
944945
// 在组件定义中
@@ -950,7 +951,7 @@ components: {
950951
}
951952
```
952953

953-
在 HTML 模版中,请使用 kebab-case 形式:
954+
在 HTML 模版中,请使用 kebab-case形式:
954955

955956
``` html
956957
<!-- 在HTML模版中始终使用 kebab-case -->
@@ -962,19 +963,19 @@ components: {
962963
当使用字符串模式时,可以不受 HTML 的 case-insensitive 限制。这意味即使是在模版中,引用、组件和 prop 可以使用 camelCase 、 PascalCase 或者 kebab-case:
963964

964965
``` html
965-
<!-- 在字符串模版中用你想用! -->
966+
<!-- 在字符串模版中可以用任何你喜欢的方式! -->
966967
<my-component></my-component>
967968
<myComponent></myComponent>
968969
<MyComponent></MyComponent>
969970
```
970971

971-
如果组件未经 `slot` 元素传递内容,你甚至可以在组件名后使用 `/` 使其自闭和:
972+
如果组件未经 `slot` 元素传递内容你甚至可以在组件名后使用 `/` 使其自闭和:
972973

973974
``` html
974975
<my-component/>
975976
```
976977

977-
当然,这只在字符串模版中有效。因为自闭和的自定义元素是无效的 HTML ,浏览器原生的解析器也无法识别它。
978+
当然,这只在字符串模版中有效。因为自闭的自定义元素是无效的 HTML ,浏览器原生的解析器也无法识别它。
978979

979980
### 递归组件
980981

@@ -985,7 +986,7 @@ name: 'stack-overflow',
985986
template: '<div><stack-overflow></stack-overflow></div>'
986987
```
987988

988-
上面组件会导致一个错误 “max stack size exceeded” ,所以要确保递归调用有终止条件 (也就是使用 `v-if` )。当使用 `Vue.component()` 全局注册一个组件时,组件 ID 自动设置为组件的 `name` 选项。
989+
上面组件会导致一个错误 “max stack size exceeded” ,所以要确保递归调用有终止条件 (比如递归调用时使用 `v-if` 并让他最终返回 false )。当使用 `Vue.component()` 全局注册一个组件时,全局的组件 ID 自动设置为该组件的 `name` 选项。
989990

990991
### 内联模版
991992

@@ -1002,7 +1003,7 @@ template: '<div><stack-overflow></stack-overflow></div>'
10021003

10031004
### X-Templates
10041005

1005-
另一种定义模版的方式是在 javascript 标签里使用 `text/x-template` 类型并且指定一个id。例如:
1006+
另一种定义模版的方式是在 JavaScript 标签里使用 `text/x-template` 类型, 并且指定一个id。例如:
10061007

10071008
``` html
10081009
<script type="text/x-template" id="hello-world-template">
@@ -1016,11 +1017,11 @@ Vue.component('hello-world', {
10161017
})
10171018
```
10181019

1019-
这在有很多模版或者小的应用中有用,否则应该避免使用,因为它将模版和组件的其他定义隔离了。
1020+
这在有很多模版或者小的应用中有用,否则应该避免使用因为它将模版和组件的其他定义隔离了。
10201021

10211022
### Cheap Static Components with `v-once`
10221023

1023-
尽管在 Vue 中渲染 HTML 很快,不过当组件中包含**大量**静态内容时, 可以考虑使用 `v-once` 将渲染结果缓存起来就像这样:
1024+
尽管在 Vue 中渲染 HTML 很快,不过当组件中包含**大量**静态内容时, 可以考虑使用 `v-once` 将渲染结果缓存起来, 就像这样:
10241025

10251026
``` js
10261027
Vue.component('terms-of-service', {

0 commit comments

Comments
 (0)