本文是Vue框架学习的第二部分-Vue的本地应用,从“内容绑定,事件绑定”,“显示切换,属性绑定”,“列表循环,表元素绑定”三个方面学习v-text,v-html,v-on,v-show,v-if,v-bind,v-for,v-model这些指令。
学习资料来源是B站的一个教学视频,我在文末会附上链接。
<div id="app">
<h2 v-text="message">这里的内容将不显示h2>
<h2>{
{ message }} 这里的内容可以显示h2>
div>
<div id="app">
<input type="button" value="事件绑定" v-on:click="doIt">input>
<input type="button" value="事件绑定" v-on:mouseenter="doIt">input>
<input type="button" value="事件绑定" v-on:dblclick="doIt">input>
<input type="button" value="事件绑定" @dblclick="doIt">input>
div>
<script>
var app = new Vue({
el: '#app',
data:{
message: "123"
}
methods:{
doIt:function(){
// 逻辑
alert(this.message); // 可以用this访问内部数据
}
}
})
script>
建议的一个计数器,左右的加减号可以改变中间的数字大小,当数字到0或者10的时候,将达到边界并给出提示。
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>计数器title>
<link rel="stylesheet" href="./css/counter.css" />
head>
<body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<div id="app">
<div class="input-num">
<button @click="sub">
-
button>
<span>
{
{ num }}
span>
<button @click="add">
+
button>
div>
div>
<script>
var app = new Vue({
el: '#app',
data:{
num : 1
},
methods:{
add:function(){
if(this.num<10){
this.num++;
}
else{
alert("已到达最大边界");
}
},
sub:function(){
if(this.num>0){
this.num--;
}
else{
alert("已到达最小边界");
}
}
}
})
script>
body>
html>
这个案例难度不大,主要是用来熟悉事件绑定以及el挂载的元素的获取,以及表达式的书写。
知识点复习:
<div id="app">
<h2 v-show="true">{
{ message }}h2>
<h2 v-show="isShow">{
{ message }}h2>
<h2 v-show="age>18">{
{ message }}h2>
div>
<div id="app">
<img v-bind:src="imgSrc">
<img v-bind:title="imgtitle">
<img v-bind:class="{active:isActive}">
div>
目标:页面中间显示一张图片,有左右箭头可以切换图片,左右到达图片列表边界的时候,按钮会消失。
思路:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>图片切换title>
<link rel="stylesheet" href="./css/pic.css" />
head>
<body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<div id="app">
<div class="center">
<h2 class="title">
图片
h2>
<img :src="imgArr[index]" alt="" />
<a href="javascript:void(0)" @click="prev" v-show="index>0" class="left">
<img src="./img/piclist/prev.jpg" alt="" />
a>
<a href="javascript:void(0)" @click="next" v-show="index" class="right">
<img src="./img/piclist/next.jpg" alt="" />
a>
div>
div>
<script>
var app = new Vue({
el: '#app',
data:{
imgArr: [
"./img/piclist/00.jpg",
"./img/piclist/01.jpg",
"./img/piclist/02.jpg",
"./img/piclist/03.jpg",
"./img/piclist/04.jpg",
"./img/piclist/05.jpg",
],
index: 0
},
methods:{
prev:function(){
this.index--;
},
next:function(){
this.index++;
}
}
})
script>
body>
html>
小结:
<div id="app">
<ul>
<li v-for="item in arr">
{
{ item }}
li>
<li v-for="item in objArr">
{
{ item.name }}
li>
<li v-for="(item,index) in arr">
{
{ index }} {
{ item }}
li>
ul>
div>
<script>
var app = new Vue({
el: '#app',
data:{
arr:[1,2,3,4,5],
objArr:[{
{
name:"1"},
{
name:"2"},
}]
}
})
script>
<div id="app">
<input type="button" value="事件绑定" v-on:click="doIt">input>
<input type="button" value="事件绑定" v-on:click="doIt1(p1)">input>
<input type="button" value="事件绑定" v-on:click="doIt2(p1,p2)">input>
<input type="text" @keyup.enter="sayHi">
div>
<script>
var app = new Vue({
el: '#app',
data:{
message: "123"
}
methods:{
sayHi:function(){
// 逻辑
alert("Hi");
}
doIt:function(){
// 逻辑
alert(this.message); // 可以用this访问内部数据
}
doIt1:function(p1){
// 逻辑
alert(p1);
}
doIt2:function(p1,p2){
// 逻辑
alert(p1);
alert(p2);
}
}
})
script>
<div id="app">
<input type="text" v-model="message" />
div>
<script>
var app = new Vue({
el: '#app',
data:{
message:"12345"
}
})
script>
功能:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>小黑记事本title>
<link rel="stylesheet" type="text/css" href="./css/notepad.css"/>
head>
<body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<section id="todoapp">
<header class="header">
<h1>小黑记事本h1>
<input v-model="inputValue" @keyup.enter="add" autofocus="autofocus" autocomplete="off" placeholder="请输入任务" class="new-todo" />
header>
<section class="main">
<ul class="todo-list">
<li class="todo" v-for="(item,index) in list">
<div class="view">
<span class="index">
{
{ index + 1 }}.
span>
<label>
{
{ item }}
label>
<button class="destroy" @click="remove(index)">button>
div>
li>
ul>
section>
<footer class="footer">
<span class="todo-count" v-if="list.length!=0"><strong> {
{ list.length }} strong> items left span>
<button class="clear-complete" @click="clear" v-show="list.length!=0">
Clear
button>
footer>
section>
<section class="info">
section>
<script>
var app = new Vue({
el: '#todoapp',
data:{
list:["写码","吃饭","睡觉"],
inputValue:"好好学习,天天向上"
},
methods:{
add:function(){
this.list.push(this.inputValue);
},
remove:function(index){
this.list.splice(index,1);
},
clear:function(){
this.list = [];
}
}
})
script>
body>
html>
小结:
学习完本文,你应该对Vue的本地应用有了很好的了解。
视频链接: 链接