1. Vue uso básico
Puntero, la expresión
Mando, propiedades dinámicas
v-html: XXS hay riesgo, cubrirá subconjunto
<template>
<div>
<P>文本插值 {{msg}}</P>
<P>JS表达式 {{flag ? 'yes' : 'no'}}</P>
<P :id="id">动态属性id</P>
<P v-html="rawHtml">
<span>使用v-html后会覆盖子元素</span>
</P>
</div>
</template>
<script>
export default {
data() {
return {
msg: 'hello',
flag: true,
id: `id-${Data.now()}`,
rawHtml: '指令-原始html <b>加粗</b><i>斜体</i>'
}
}
}
</script>
2. reloj 和 computarizada
Hay computarizada caché, el cambio de datos no se vuelve a calcular
ver el monitor por defecto superficial, escucha la profundidad?
Reloj monitor de tipo de referencia, no puede conseguir OLDVAL
<template>
<div>
<p>num {{num}}</p>
<p>double1 {{double1}}</p>
<input v-model="double2"/>
</div>
</template>
<script>
export default {
data() {
return {
num: 20
}
},
computed: {
double1() {
return this.num * 2
},
double2: {
get() {
return this.num * 2
},
set(val) {
this.num = val/2
}
}
}
}
</script>
(Si ha sido num 20, no serán recalculados double1 y doble2, mejorar el enlace de datos .v modelo de dos vías de desempeño operacional, debe obtener y definir)
<template>
<div>
<input v-model="name"/>
<input v-model="info.hobby"/>
</div>
</template>
<script>
export default {
data() {
return {
name: '张三',
info: {
hobby: '打篮球'
}
}
},
watch: {
name(oldVal, val) {
console.log('watch name', oldVal, val) // 值类型,可正常拿到 oldVal 和 val
},
info: {
handler(oldVal, val) {
console.log('watch info', oldVal, val) // 引用类型,拿不到 oldVal 。因为指针相同,此时已经指向了新的 val
},
deep: true // 深度监听
}
}
}
</script>
(Vea el monitor en el valor del nombre del tipo, y los tipos de referencia de información para el monitor poco profunda la información :. información puede ser modificado, pero el sub-sub-sub-atributos dentro o modificación de atributo no será capaz de escuchar a escuchar los tipos de referencia obtienen OLDVAL, porque para. modificar el valor del tipo de referencia es una operación del puntero, y Val OLDVAL aunque diferentes variables, pero apunta a la misma dirección, una vez que el valor antes del cambio no puede conseguir)
3. clase 和 estilo
Utilice propiedades dinámicas, utilizando joroba redacción
<template>
<div>
<p :class="{ black: isBlack, yellow: isYellow }">使用 class</p>
<p :class="[black, yellow]">使用 class (数组)</p>
<p :style="styleData">使用 style</p>
</div>
</template>
<script>
export default {
data() {
return {
isBlack: true,
isYellow: true,
black: 'black',
yellow: 'yellow',
styleData: {
fontSize: '50px', // 使用驼峰式
color: 'red',
backgroundColor: '#ccc' // 使用驼峰式
}
}
}
}
</script>
4. Condiciones de renderizado
v-v-si el uso de los demás, se puede utilizar una variable, puede utilizar la expresión ===
La diferencia entre V-if y de v-espectáculo?
El uso de la v escenarios hipotéticos, y el V-espectáculo?
<template>
<div>
<p v-if="type === 'a'">A</p>
<p v-else-if="type === 'b'">B</p>
<p v-else>other</p>
<p v-show="type === 'a'">A</p>
<p v-show="type === 'b'">B</p>
</div>
</template>
<script>
export default {
data() {
return {
type: 'a'
}
}
}
</script>
(Los diferentes resultados de representación para v-aunque sólo rendir un elemento DOM, por v-show, los datos serán una muestra de un elemento DOM, otras opciones podrían hacer que el display: none, simplemente no lo demostró.)
(Para una selección o de datos actualizada con frecuencia, seleccione V-si, y si el cambio frecuente necesario Es necesario v-espectáculo, con pantalla: el control de ninguno de piel y una mejor presentación, o con v-si dará lugar a nodos DOM frecuencia carga de destrucción)
5. Lista Render
Cómo atravesar el objeto?
La importancia de la clave de (puede no garabato)
v-para y no puede ser utilizada con el v-si
<template>
<div>
<p>遍历数组</p>
<ul>
<li v-for="(item, index) in listArr" :key="item.id">
{{index}} - {{item.id}} - {{item.title}}
</li>
</ul>
<p>遍历对象</p>
<ul >
<li v-for="(val, key, index) in listObj" :key="key">
{{index}} - {{key}} - {{val.title}}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
flag: false,
listArr: [
{ id: 'a', title: '标题1' }, // 数据结构中,最好有 id ,方便使用 key
{ id: 'b', title: '标题2' },
{ id: 'c', title: '标题3' }
],
listObj: {
a: { title: '标题1' },
b: { title: '标题2' },
c: { title: '标题3' },
}
}
}
}
</script>
(V-para-v si es mayor que el número de etapa aritmética, por lo tanto definir ciclos)
6. Evento
los parámetros de adquisición de eventos y parámetros personalizados
modificador caso, las teclas modificadoras
El evento está obligado a ir
<template>
<div>
<p>{{num}}</p>
<button @click="increment1">+1</button>
<button @click="increment2(2, $event)">+2</button>
</div>
</template>
<script>
export default {
data() {
return {
num: 0
}
},
methods: {
increment1(event) {
console.log('event', event, event.__proto__.constructor) // 是原生的 event 对象
console.log(event.target) // 事件被挂载到button上
console.log(event.currentTarget) // 事件在button处触发
// 注意,事件是被注册到当前元素的,和 React 不一样
this.num++
},
increment2(val, event) {
console.log(event.target)
this.num = this.num + val
},
loadHandler() {
// do some thing
}
},
mounted() {
window.addEventListener('load', this.loadHandler)
},
beforeDestroy() {
// 用 vue 绑定的事件,组建销毁时会自动被解绑
// 自己绑定的事件,需要自己销毁!!!
window.removeEventListener('load', this.loadHandler)
}
}
</script>
(Increment1 no necesita pasar parámetros, el evento se puede obtener directamente; increment2 tener parámetros personalizados, necesita evento evento de escritura en el argumento)
(Conclusión: 1. evento 2. El evento es nativo al elemento actual se monta)
Modificador de evento
Detener el evento click continúa propagándose |
<a v-on:click.stop="doThis"> </a> |
Cuando un evento ya no se vuelve a cargar la página |
<Form v-on: submit.prevent =”onSubmit”> </ form> |
Los modificadores pueden ser conectados en serie |
<a v-on:click.stop.prevent="doThis"> </a> |
Sólo modificador |
<Form v-on: submit.prevent> </ form> |
Cuando se agrega detectores de eventos utilizando el modo de captura de eventos, un evento que se desencadena dentro del primer elemento en este proceso, antes de que se entregó a los elementos de proceso internos |
<Div v-en: click.capture =”doThis”> </ div> |
Sólo manejador event.target se activa cuando el elemento actual en sí, que no se desencadena por elementos de dentro |
<Div v-en: click.self =”doThis”> </ div> |
Teclas modificadoras
Alt se presiona juntos o cambio desencadenará |
<Botón @ click.ctrl =”onclick”> 按钮 </ botón> |
Y sólo se CTRL presionada para desencadenar |
<Botón @ click.ctrl.exact =”onclick”> 按钮 </ botón> |
Cuando no hay modificador se presiona el gatillo |
<Botón @ click.exact =”onclick”> 按钮 </ botón> |
7. Forma
en el modelo
elemento de forma común área de texto, casilla de verificación, la radio, seleccione
Modificadores perezoso, número, guarnecido
(Tomado espacios finales del ajuste; Lazy va a cambiar después de la entrada es completa, el proceso no cambia la entrada; Número La conversión digital)
<template>
<div>
<p>输入框: {{name}}</p>
<input type="text" v-model.trim="name"/>
<input type="text" v-model.lazy="name"/>
<input type="text" v-model.number="age"/>
<p>多行文本: {{desc}}</p>
<textarea v-model="desc"></textarea>
<!-- 注意,<textarea>{{desc}}</textarea> 是不允许的!!! -->
<p>复选框 {{checked}}</p>
<input type="checkbox" v-model="checked"/>
<p>多个复选框 {{checkedNames}}</p>
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<p>单选 {{gender}}</p>
<input type="radio" id="male" value="male" v-model="gender"/>
<label for="male">男</label>
<input type="radio" id="female" value="female" v-model="gender"/>
<label for="female">女</label>
<p>下拉列表选择 {{selected}}</p>
<select v-model="selected">
<option disabled value="">请选择</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<p>下拉列表选择(多选) {{selectedList}}</p>
<select v-model="selectedList" multiple>
<option disabled value="">请选择</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
</div>
</template>
<script>
export default {
data() {
return {
name: '张三',
age: 23,
desc: '自我描述',
checked: true,
checkedNames: [],
gender: 'male',
selected: '',
selectedList: []
}
}
}
</script>
Descripción: Esta nota de doble Curso Mu del maestro: https://coding.imooc.com/learn/list/419.html