doc: update vue2.md
. (#5)
This commit is contained in:
parent
327e35baf7
commit
31df164656
124
docs/vue2.md
124
docs/vue2.md
@ -1188,6 +1188,55 @@ vm.selected.number // => 123
|
|||||||
组件基础
|
组件基础
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 单文件组件
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
- 将 `HTML`/`CSS`/`JS` 三部分存放到一个 `Hello.vue` 文件中
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<p>{{ title }} World!</p>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'Hello',
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: 'Hello'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: function() {
|
||||||
|
return {
|
||||||
|
greeting: "Hello"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
p {
|
||||||
|
font-size: 2em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
```
|
||||||
|
- 使用 `Hello.vue` 组件
|
||||||
|
```html
|
||||||
|
<script>
|
||||||
|
import Vue from "vue";
|
||||||
|
import Hello from "./Hello";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { Hello }
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<Hello :title="'aaaa'"></Hello>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
<!--rehype:className=style-timeline-->
|
||||||
|
|
||||||
### 基本示例
|
### 基本示例
|
||||||
<!--rehype:wrap-class=row-span-2-->
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
@ -1232,34 +1281,6 @@ new Vue({
|
|||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
### `data` 必须是一个函数
|
|
||||||
|
|
||||||
```js
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
count: 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
组件的 `data` 选项必须是一个函数
|
|
||||||
|
|
||||||
### 向子组件传递数据
|
|
||||||
|
|
||||||
```js
|
|
||||||
Vue.component('blog-post', {
|
|
||||||
props: ['title'],
|
|
||||||
template: '<h3>{{ title }}</h3>'
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
当值传递给一个 `prop` `attribute` 的时候,变成了组件实例的一个 `property`
|
|
||||||
|
|
||||||
```html
|
|
||||||
<blog-post title="写博客"></blog-post>
|
|
||||||
<blog-post title="如此有趣"></blog-post>
|
|
||||||
```
|
|
||||||
|
|
||||||
### 单个根元素
|
### 单个根元素
|
||||||
|
|
||||||
```js {4}
|
```js {4}
|
||||||
@ -1285,6 +1306,34 @@ Vue.component('blog-post', {
|
|||||||
</blog-post>
|
</blog-post>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 向子组件传递数据
|
||||||
|
|
||||||
|
```js
|
||||||
|
Vue.component('blog-post', {
|
||||||
|
props: ['title'],
|
||||||
|
template: '<h3>{{ title }}</h3>'
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
当值传递给一个 `prop` `attribute` 的时候,变成了组件实例的一个 `property`
|
||||||
|
|
||||||
|
```html
|
||||||
|
<blog-post title="写博客"></blog-post>
|
||||||
|
<blog-post title="如此有趣"></blog-post>
|
||||||
|
```
|
||||||
|
|
||||||
|
### `data` 必须是一个函数
|
||||||
|
|
||||||
|
```js
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
count: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
组件的 `data` 选项必须是一个函数
|
||||||
|
|
||||||
### 监听子组件事件
|
### 监听子组件事件
|
||||||
<!--rehype:wrap-class=row-span-2-->
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
@ -1296,8 +1345,7 @@ Vue.component('blog-post', {
|
|||||||
<h3>{{ post.title }}</h3>
|
<h3>{{ post.title }}</h3>
|
||||||
<button
|
<button
|
||||||
v-on:click="$emit('enlarge-txt')"
|
v-on:click="$emit('enlarge-txt')"
|
||||||
>
|
>放大文字
|
||||||
Enlarge text
|
|
||||||
</button>
|
</button>
|
||||||
<div v-html="post.content"></div>
|
<div v-html="post.content"></div>
|
||||||
</div>
|
</div>
|
||||||
@ -1355,6 +1403,8 @@ methods: {
|
|||||||
### 在组件上使用 v-model
|
### 在组件上使用 v-model
|
||||||
<!--rehype:wrap-class=col-span-2-->
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
自定义事件也可以用于创建支持 `v-model` 的自定义输入组件。
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<input v-model="searchText">
|
<input v-model="searchText">
|
||||||
```
|
```
|
||||||
@ -1362,7 +1412,19 @@ methods: {
|
|||||||
等价于
|
等价于
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<input v-bind:value="searchText" v-on:input="searchText = $event.target.value">
|
<input
|
||||||
|
v-bind:value="searchText"
|
||||||
|
v-on:input="searchText = $event.target.value"
|
||||||
|
>
|
||||||
|
```
|
||||||
|
|
||||||
|
当用在组件上时,v-model 则会这样:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<custom-input
|
||||||
|
v-bind:value="searchText"
|
||||||
|
v-on:input="searchText = $event"
|
||||||
|
></custom-input>
|
||||||
```
|
```
|
||||||
|
|
||||||
为了让它正常工作,这个组件内的 \<input> 必须:
|
为了让它正常工作,这个组件内的 \<input> 必须:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user