缩写: {{…}}(双大括号)的文本插值
<template>
<h1> hello h1>
<p v-text="data.name">p>
<p>{{data.name}}}p>
template>
<script>
import {reactive} from "vue"//引入本页面需要的东西
export default {
name:"home",//本代码的名字
setup(){//相当于生命周期中的create和before create
const data =reactive({
name:"小王",
age:13
})//声明一个对象,名字是data;reactive()是一个方法,存放响应式对象
return {//只有return之后才能在html中使用
data
}
}
}
script>
作用:创建一个 ref 对象,其 value 值指向另一个对象中的某个属性。
语法1:const name = toRef(person, ’ name ')
应用:要将响应式对象中的某个属性单独提供给外部使用时
扩展:toRefs 与 toRef 功能一致,但可以批量创建多个 ref 对象
语法2:toRefs(person)
<template>
<h1> hello h1>
<p v-text="name">p>
<p>{{name}}p>
template>
<script>
import {reactive,toRefs} from "vue"//引入本页面需要的东西
export default {
name:"home",//本代码的名字
setup(){//相当于生命周期中的create和before create
const data =reactive({
name:"小王",
age:13
})//声明一个对象,名字是data;reactive()是一个方法,存放响应式对象
return {//只有return之后才能在html中使用
...toRefs(data)//将一个响应式对象,转换为普通对象,并且将其中的属性转换为 Ref 对象
}
}
}
script>
var a = {
name: '张三',
age: 25
}
var b = {
job: 'web前端',
...a
}
// 相当于
var c = {
job: 'web前端',
name: '张三',
age: 25
}
如果不想改变标签的内容,可以通过使用 v-once 指令执行一次性地插值,当数据改变时,插值处的内容不会更新。
<span v-once>这个将不会改变: {{ message }}span>
<div v-html="斜体字">div>
缩写:v-bind的缩写为 :(冒号)
格式:v-bind:属性名=“变量名”—变量在js中赋值
对于class类名绑定可以叠加使用
<div v-bind:id="dynamicId">div>
对于布尔属性,常规值为 true 或 false,如果属性值为 null 或 undefined,则该属性不会显示出来。
#isButtonDisabled是一个布尔值,在js中进行声明
<button v-bind:disabled="isButtonDisabled">按钮button>
Vue.js 都提供了完全的 JavaScript 表达式支持。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
<p v-if="isTrue">现在你看到我了p>
<p v-show="isTrue">现在你看到我了p>
<div id="app">
<ol>
<li v-for="site in sites">
{{ site.text }}
li>
ol>
div>
<script>
const app = {
data() {
return {
sites: [
{ text: 'Google' },
{ text: 'Runoob' },
{ text: 'Taobao' }
]
}
}
}
Vue.createApp(app).mount('#app')
script>
<div id="app">
<ol>
<li v-for="(site, index) in sites">
{{ index }} -{{ site.text }}
li>
ol>
div>
<div id="app">
<ol>
<li v-for="(site, index) in sites" :key=index>
{{ index }} -{{ site.text }}
li>
ol>
div>
<div id="app">
<ul>
<li v-for="value in object">
{{ value }}
li>
ul>
div>
<script>
const app = {
data() {
return {
object: {
name: '小王',
slogan: '梦想!'
}
}
}
}
Vue.createApp(app).mount('#app')
script>
<div id="app">
<ul>
<li v-for="(value, key) in object">
{{ key }} : {{ value }}
li>
ul>
div>
<div id="app">
<ul>
<li v-for="(value, key, index) in object">
{{ index }}. {{ key }} : {{ value }}
li>
ul>
div>
<div id="app">
<ul>
<li v-for="n in 10">
{{ n }}
li>
ul>
div>
我们可以对数组的元素进行处理后再显示出来,一般可以通过创建一个计算属性,来返回过滤或排序后的数组。
在自定义组件上,你可以像在任何普通元素上一样使用 v-for:
<my-component v-for="item in items" :key="item.id">my-component>
然而,任何数据都不会被自动传递到组件里,因为组件有自己独立的作用域。为了把迭代数据传递到组件里,我们要使用 props:
<my-component
v-for="(item, index) in items"
:item="item"
:index="index"
:key="item.id"
>my-component>
不自动将 item 注入到组件里的原因是,这会使得组件与 v-for 的运作紧密耦合。明确组件数据的来源能够使组件在其他场合重复使用。
<div id="todo-list-example">
<form v-on:submit.prevent="addNewTodo">
<label for="new-todo">Add a todolabel>
<input
v-model="newTodoText"
id="new-todo"
placeholder="E.g. Feed the cat"
/>
<button>Addbutton>
form>
<ul>
<todo-item
v-for="(todo, index) in todos"
:key="todo.id"
:title="todo.title"
@remove="todos.splice(index, 1)"
>todo-item>
ul>
div>
用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。
<input type="text"placeholder="请输入姓名" v-model="message">
<template>
<a v-on:click="doSomething"> ... a>
<a @click="doSomething"> ... a>
<a @[event]="doSomething"> ... a>
template>
<script>
export default {
setup(){//相当于生命周期中的create和before create
const doSomething=()=>{//es6语法声明事件
}
return {//只有return之后才能在html中使用
doSomething
}
}
script>
正则来验证输入的合法性
<input type="text"placeholder="请输入姓名" v-model="message" @input ="blurHandle">
<input type="text"placeholder="请输入姓名" v-model="message" @blur="blurHandle">
修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():
<form v-on:submit.prevent="onSubmit">form>