在vue中,指令带有前缀v-,以表示它们是Vue提供的特殊特性。它们会在渲染DOM上应用特殊的响应式行为。
v-bind:绑定一个元素
例子:
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<!--span 标签的title属性-->
<span v-bind:title="message">鼠标停留几秒查看此处动态绑定的提示信息</span>
</div>
<!--1、导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
message:"first vue!"
}
});
</script>
</body>
</html>
上面v-bind指令的意思:将这个元素节点的title特性和vue实例的message属性保持一致。
条件判断语句
v-if:
v-else:
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<h1 v-if="ok">Yes</h1>
<h1 v-else>No</h1>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
ok: true
}
});
</script>
</body>
</html>
v-else-if
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<h1 v-if="type==='A'">A</h1>
<h1 v-else-if="type==='B'">B</h1>
<h1 v-else>C</h1>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
type: 'A'
}
});
</script>
</body>
</html>
循环
v-for
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<!--item:遍历的每一项; items:下面写的items-->
<li v-for="item in items">
{{item.message}}
</li>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el:"#app",
data:{
items: [
{message: 'Vue'},
{message: 'Vue前端'}
]
}
});
</script>
</body>
</html>
监听事件
v-on
例子:
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<!--属于标签,得导入约束-->
<!--绑定click事件,并指定名为firstMethods的方法-->
<button v-on:click="firstMethods">click this</button>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
message: "2021/7/25 11:20:11"
},
methods: {
//方法必须定义在vue的methods对象中,v-on事件
firstMethods: function (event) {
alert(this.message);
}
}
});
</script>
</body>
</html>
双向数据绑定
v-model,v-model指令在表单<input>、<textarea>、<select>元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。他负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
注意:v-model会忽略所有表单元素的value、checked、selected特性的初始值而总是将vue实例的数据作为数据来源。你应该通过JavaScript在组件的data选项中声明初始值!
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
请输入内容:<input type="text" v-model="message">{{message}} <br>
性别:
<input type="radio" name="sex" value="男" v-model="checked"> 男
<input type="radio" name="sex" value="女" v-model="checked"> 女
<p>
选中值: {{checked}}
</p>
<br>
<select name="" id="" v-model="selected">
<option value="null">--请选择--</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<span>value:{{selected}}</span>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
var vm = new Vue({
el: "#app",
data: {
/* 默认值 */
message: "草团子",
checked: '',
selected: ''
}
});
</script>
</body>
</html>
组件
组件是可复用的vue实例,就是一组可以重复使用的模板,跟JSTL的自定义标签、thymeleaf的th:fragment等框架有着异曲同工之妙。通常一个应用会以一颗嵌套的组件树的形式来组织
例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其他的像导航链接、博文之类的组件。
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义标签</title>
</head>
<body>
<div id="app">
<!--组件:传递给组件中的值:props-->
<substitute v-for="study in items" v-bind:study="study"></substitute>
</div>
<!--导入vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
//定义一个vue的组件component
//template:模板 props:接收参数
Vue.component("substitute",{
props: ['study'],
template: '<li>{{study}}</li>'
});
var vm = new Vue({
el: "#app",
data: {
items: ["vue","前端","后期进阶"]
}
});
</script>
</body>
</html>
想要详细了解Vue的话,视频链接:https://www.bilibili.com/video/BV18E411a7mC
博客链接:https://blog.csdn.net/DDDDeng_/article/details/107475920