v-text
v-text
指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题innerText
属性不会解析html标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-text -->
<span v-text="test"></span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
test:'v-text'
}
})
</script>
</body>
</html>
页面显示结果如下:
注意:v-text
不会解析html标签
例如:修改vue实例中的data中的test
属性为
test:'v-text
'
v-html
innerHtml
v-html
,永不用在用户提交的内容上。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-html -->
<span v-html="vHtml"></span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
vHtml:'v-html
'
}
})
</script>
</body>
</html>
页面显示结果如下:
v-pre
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-pre -->
<span v-pre>{{vPre}}</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
vPre: 'v-pre',
}
})
</script>
</body>
</html>
页面显示结果如下:
v-once
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-once -->
<span v-once>{{vOnce}}</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
vOnce:'v-once'
}
})
</script>
</body>
</html>
页面显示结果如下:
尝试修改v-once
属性,页面显示结果如下:
发现页面并没有变化,所以一般用于页面加载一次之后数据不用再次更新时使用
v-model
input
、select
、textarea
、components
中使用<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-model -->
<span>{{vModel}}</span>
<input type="text" v-model="vModel"/>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
vModel:'v-model'
}
})
</script>
</body>
</html>
页面显示结果如下:
在改变输入框内容时,会发现数据会随着输入框内容变化而变化
页面显示结果如下:
在改变vue实例中的v-model
属性时,会发现输入框内容会随着数据变化而变化
页面显示结果如下:
v-on
v-on:click
,也可以缩写为@click
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-on -->
<span v-on:click="handleClick">点我</span>
<!-- 缩写形式-->
<span @click="handleClick">点我缩写</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
//对应事件函数名称
handleClick:function(){
alert('我是span')
}
},
})
</script>
</body>
</html>
点击span,页面显示结果如下:
点击span缩写,依然可以触发,页面显示结果如下:
v-bind
v-bind:href
,也可以缩写为:href
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-on -->
<span v-on:click="handleClick">点我</span>
<!-- 缩写形式-->
<span @click="handleClick">点我缩写</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
//对应事件函数名称
handleClick:function(){
alert('我是span')
}
},
})
</script>
</body>
</html>
页面显示结果如下:
点击百度,页面显示结果如下:
点击百度缩写,依然可以跳转,页面显示结果如下:
v-if
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-if -->
<!-- 判断是否加载,如果为真,就加载,否则不加载-->
<span v-if="scope>85">分数:{{scope}},优秀</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
scope:90
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
},
})
</script>
</body>
</html>
v-else
v-else
必须紧跟在v-if
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-if-else-->
<!-- 判断是否加载,如果为真,就加载,否则不加载-->
<span v-if="scope>85">分数:{{scope}},优秀</span>
<span v-else>分数:{{scope}},不够优秀</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
scope:70
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
},
})
</script>
</body>
</html>
v-else-If
v-else-if
必须紧跟在v-if
或v-else-if
后<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-else-if -->
<!-- 判断是否加载,如果为真,就加载,否则不加载-->
<span v-if="scope>85">分数:{{scope}},优秀</span>
<span v-else-if="scope>70">分数:{{scope}},良好</span>
<span v-else>分数:{{scope}},不及格</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
scope:50
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
},
})
</script>
</body>
</html>
v-show
display CSS 属性
。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
<style>
div {
width: 100px;
height: 100px;
background: red
}
</style>
</head>
<body>
<div id="app">
<!-- v-show -->
<!-- 判断是否加载,如果为真,就加载,否则不加载-->
<div v-show="isShow"></div>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
isShow:true
},
//将事件处理函数写在methods属性中(methods是一个对象)
//需要和事件处理函数名称一致,可以是带参也可以不带参
methods: {
},
})
</script>
</body>
</html>
v-for
对象
,也可以是普通元素
遍历数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-for -->
<div>
<ul>
<!--item 是自己定义的一个名字 代表数组里面的每一项
items对应的是 data中的数组-->
<li v-for="item in items">
{{ item.text }}
</li>
</ul>
</div>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
items: [
{
id: 1,
text: '西瓜'
},
{
id: 2,
text: '草莓'
},
{
id: 3,
text: '葡萄'
}
]
},
//将事件处理函数写在methods属性中(methods是一个对象)
methods: {
},
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<body>
<div id="app">
<!-- v-for -->
<div>
<ul>
<!-- 循环结构-遍历对象
v 代表对象的value
k 代表对象的键
i 代表索引
--->
<li v-for="(v,k,i) in obj" :key="v.id">
{{v + '---' + k + '---' + i}}
</li>
</ul>
</div>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
obj:{
id:1,
name:'张三'
}
},
//将事件处理函数写在methods属性中(methods是一个对象)
methods: {
},
})
</script>
</body>
</html>
v-if
和 v-for
v-if
与 v-for
一起使用时,v-for
具有比 v-if
更高的优先级。v-for
时一般需要带上key
key的作用
key
用来给每个节点做一个唯一标识v-cloak
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue指令</title>
</head>
<style>
[v-cloak] {
/* 元素隐藏 */
display: none;
}
</style>
<body>
<div id="app">
<!-- 渲染dom -->
<!-- 使用插值表达式渲染数据-->
<!-- 在 数据渲染完成之后,v-cloak 属性会被自动去除, v-cloak一旦移除也就是没有这个属性了 属性选择器就选择不到该标签也就是对应的标签会变为可见 -->
<span v-cloak>{{content}}</span>
<!--引入vue.js文件 -->
<script src="./vue.js"></script>
<script>
//创建一个vue实例
var app = new new Vue({
el: '#app',//填入需要vue管理的元素选择器,也可以使类选择器
//将需要的数据填入data属性中(data是一个对象)
data: {
content: 'hello world'//添加了一个名为content的属性
}
})
</script>
</body>
</html>
v-slot
2.6.0
新增指令,它取代了slot
和 slot-scope
prop
的插槽template
组件
(对于一个单独的带 prop
的默认插槽)中使用#
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app">
<!-- 组件名称-->
<my-component>
<!-- 缩写形式v-slot 具名插槽使用-->
<template #header>
<h1>页面头部</h1>
</template>
<template #body>
<h1>页面内容</h1>
</template>
<template #footer>
<h1>页面底部</h1>
</template>
<!--独占默认插槽 作用域插槽使用-->
<!-- <template v-slot:default="slotProps">
姓名: {{slotProps.user.firstName+slotProps.user.firstName.lastName}}
</template> -->
<!--不带参数的 v-slot 被假定对应默认插槽: -->
<!--独占默认插槽缩写形式+对象解构更简单 -->
<template v-slot="{user}">
姓名: {{user.firstName+''+user.lastName}}
</template>
</my-component>
</div>
</body>
<!-- 引入vue.js -->
<script src="./vue.js"></script>
<script>
//全局注册组件
//第一个参数自定义标签名
Vue.component('my-component', {
data: function () {
return {
user: {
lastName: '肖战',
firstName: '李'
}
}
},
template: `
{{ user }}
`
})
//创建vue实例
var vm = new Vue({
el: '#app',
methods: {
}
})
</script>
</html>