文档章节

vue基础知识练习整理1

一个yuanbeth
 一个yuanbeth
发布于 07/18 09:06
字数 1746
阅读 13
收藏 0

一、Hello World

<div id="itany">
	{{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 -->
 </div>
<script src="js/vue.js"></script>
<script>
	var vm=new Vue({
		el:'#itany', //指定关联的元素
		data:{ //存储数据
			msg:'Hello World,I am coming!!'
		}
	});
</script>

二、常用指令:v-model

<div>
	用户名:<input type="text" v-model="name"><br>
	{{name}}<br>
	{{age}}<br>
	{{flag}}<br>
	{{nums}}<br>
	{{user}}
</div>
<script src="js/vue.js"></script>
<script>
new Vue({
       el:'div', //vue2.0不允许将vue实例挂载到<html>或<body>元素
       data:{
         name:'',//即使没有值,也不能省略,省略会报错
         age:21,
         flag:true,
         nums:[12,4,23,5],
         user:{id:453655,name:'小花'}
       }
	});
</script>

三、常用指令:v-for

<div id="demo1">
	{{arr}}
		<ul>
      	<!--普通循环-->
	      <li v-for="value in arr">{{value}}</li>
        <li v-for="value in  user">{{value}}</li>
        <!--键值循环-->
      	<li v-for="(v,k) in arr">{{k}}={{v}}</li>
        <li v-for="(v,k) in  user">{{k}}={{v}}</li>
        <!-- 可以直接循环包含重复数据的集合,可以通过指定:key属性绑定唯一key,当更新元素时可重用元素,提高效率,类似于vue1.0中track-by -->
        <li v-for="(v,k) in arr2" :key="k">{{v}}</li> 

        <li v-for="(user,index) in users">
		    {{index+1}},{{user.id}},{{user.name}},{{user.age}}
	     </li>
		</ul>
</div>
<script src="js/vue.js"></script>
<script>
new Vue({
       el:'#demo1', 
       data:{
        arr:[12,4,5,34,2,11],
        user:{id:4344,name:'小花',age:19},
        arr2:[12,4,5,34,2,11,12],
        users:[
          {id:454356,name:'小花',age:'25'},
          {id:454356,name:'小明',age:'25'},
          {id:454356,name:'小华',age:'25'},
        ]
       }
});
</script>

四、常用指令:v-on

<div id="demo1">
	<button v-on:click="show">点我</button>
	<button v-on:click="add()">向数组中添加一个元素</button>
	<br>
	{{arr}}
	<hr>

	<button v-on:mouseover="show">鼠标经过</button>
	<button v-on:dbclick="show">鼠标双击</button>
</div>
<script src="js/vue.js"></script>
<script>
	let vm = new Vue({
       el:'#demo1', 
       data:{//存储数据
        arr:[12,4,5,34,2,11]
       },
       methods:{//存储方法
       	 show:function(){
       	 	console.log('show方法');
       	 },
         add(){
			console.log(this); //this表示当前vue实例
			console.log(this===vm); //true
			this.arr.push(666); //使用this访问当前实例中的成员
			this.show();
		  }
       }
	});
</script>

五、常用指令:v-show

<div id="demo1">
	<button v-on:click="change">隐藏</button>
	<button v-on:click="flag=!flag">隐藏</button>
	<hr>
	<div style="width: 100px;height: 100px; background-color: red" v-if="flag">hello word!</div>
</div>
<script src="js/vue.js"></script>
<script>
	let vm = new Vue({
       el:'#demo1', 
       data:{//存储数据
         flag:true
       },
       methods:{//存储方法
       	 change(){
       	 	this.flag = !this.flag;
       	 }
       }
	});
</script>

六、练习:用户管理

<div class="container">
		<h2 class="text-center">添加用户</h2>
        <form class="form-horizontal">
        	<div class="form-group">
				<label for="name" class="control-label col-sm-2 col-sm-offset-2">姓  名:</label>
				<div class="col-sm-6">
					<input type="text" class="form-control" id="name" v-model="user.name" placeholder="请输入姓名">
				</div>
			</div>
			<div class="form-group">
				<label for="age" class="control-label col-sm-2 col-sm-offset-2">年  龄:</label>
				<div class="col-sm-6">
					<input type="text" class="form-control" id="age" v-model="user.age" placeholder="请输入年龄">
				</div>
			</div>
			<div class="form-group">
				<label for="email" class="control-label col-sm-2 col-sm-offset-2">邮  箱:</label>
				<div class="col-sm-6">
					<input type="text" class="form-control" id="email" v-model="user.email" placeholder="请输入邮箱">
				</div>
			</div>
			<div class="form-group text-center">
				<input type="button" value="添  加" class="btn btn-primary" v-on:click="addUser">
				<input type="reset" value="重  置" class="btn btn-primary">
			</div>
        </form>
        <hr>
         

		<table class="table table-bordered table-hover">
			<caption class="h3 text-center text-info">用户列表</caption>
			<thead>
				<tr>
					<th class="text-center">序号</th>
					<th class="text-center">姓名</th>
					<th class="text-center">年龄</th>
					<th class="text-center">邮箱</th>
					<th class="text-center">操作</th>
				</tr>
			</thead>
			<tbody>
				<tr v-for="(user,index) in users" class="text-center">
					<td>{{index+1}}</td>
					<td>{{user.name}}</td>
					<td>{{user.age}}</td>
					<td>{{user.email}}</td>
					<td>
						<button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#del" v-on:click="nowIndex=index">删除</button>
					</td>
				</tr>
				<tr>
					<td colspan="5" class="text-right">
						<button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#del" v-on:click="nowIndex=-1">删除所有</button>
					</td>
				</tr>
			</tbody>
		</table>

       <!-- 模态框,弹出框 -->
		<div class="modal fade" id="del">
			<div class="modal-dialog">
				<div class="modal-content">
					<div class="modal-header">
						<button class="close" data-dismiss="modal">
							<span>&times;</span>
						</button>
						<h4 class="modal-title" v-show="nowIndex!==-1">确认要删除用户:{{users[nowIndex]?users[nowIndex].name:''}} 吗?</h4>
						<h4 class="modal-title" v-show="nowIndex===-1">确认要删除所有用户吗?</h4>
					</div>
					<div class="modal-body text-center">
						<button class="btn btn-primary" data-dismiss="modal">取消</button>
						<button class="btn btn-primary" data-dismiss="modal" v-on:click="deleteUser">确认</button>
					</div>
				</div>
			</div>
		</div>
	 </div>
<script src="js/vue.js"></script>
<script src="bootstrap/jquery.min.js"></script>
<script src="bootstrap/bootstrap.min.js"></script>
<script>
	let vm=new Vue({
		el:'.container',
		data:{ 
			users:[
				{name:'tom',age:24,email:'tom@itany.com'},
				{name:'jack',age:23,email:'jack@sina.com'}
			],
			user:{},
			nowIndex:-1 //当前要删除项的索引		},
				methods:{ 
			addUser(){				this.users.push(this.user);
						this.user={};
			},
			deleteUser(){
				if(this.nowIndex===-1){ //删除所有
					this.users=[];
				}else{
					this.users.splice(this.nowIndex,1); //从指定索引位置开始删除,删除一个
				}
			}
		}
	});
</script>

七、事件简写和事件对象$event

<div id="demo1">
	<button v-on:click="show">点我</button>   <button @click="show">点我</button> <hr>
	<button @click="print($event)">Click Me</button>
</div>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
       el:'#demo1', 
      	methods:{ 
		show(){
		console.log(111);
		},
		print(e){
			// console.log(e);
			console.log(e.target.innerHTML); //DOM对象
			console.log(this);
		}
	}
});
</script>

八、事件冒泡和默认行为

<div id="demo1">
	<div @click="write">
		<p @click="print">
			<!-- <button @click="show($event)">点我</button> -->
			<button @click.stop="show">点我</button>
		</p>
	</div>
	<hr>
	<!-- <a href="#" @click="study($event)">俺是链接</a> -->
	<a href="#" @click.prevent="study">俺是链接</a>
</div>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
     el:'#demo1', 
     methods:{ 
		show(){
			console.log(111);
			// e.stopPropagation();
		},
		print(){
			console.log(222);
		},
		write(){
			console.log(333);
		},
		study(){
			console.log(444);
			// e.preventDefault();
		}
	}
});
</script>

九、键盘事件

<div id="demo1">
		<!-- 键盘事件:@keydown、@keypress、@keyup -->
		<!-- 用户名:-->
		<input type="text" @keydown="show($event)"> 
		<!-- 简化按键的判断 -->
		用户名:<input type="text" @keydown="show($event)">
		用户名:<input type="text" @keydown.13="print"> 
		用户名:<input type="text" @keydown.enter="print">
		用户名:<input type="text" @keydown.up="print"> 
		用户名:<input type="text" @keydown.f1="print">
		<!-- 事件修饰符 -->
		<button @click.once="print">只触发一次</button>
</div>
<script src="js/vue.js"></script>
<script>
Vue.config.keyCodes={
		a:65,
		f1:112
	}

let vm = new Vue({
       el:'#demo1', 
      methods:{ 
		show(e){
				console.log(e.keyCode);
				if(e.keyCode==13){
					console.log('您按了回车');
				}
			},
		print(){
				// console.log('您按了回车');
				// console.log('您按了方向键上');
				console.log('11111');
		     }
	}
});
</script>

十、属性绑定和属性的简写

<div id="demo1">
	<img src="{{url}}">
	<!-- 可以直接访问vue中的数据,不需要使用{{}} -->
	<img v-bind:src="url">
	<img :src="url" :width="w" :height="h">
</div>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
       el:'#demo1', 
      methods:{ 
		data:{
			url:'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png',
			w:'200px',
			h:'100px'
			}
	}
});
</script>

十一、class和style属性

<div id="demo1">
		<!-- class属性-->

		<p class="aa">南京网博</p> <!-- 可以访问,普通css方式 -->

		 <p :class="aa">南京网博</p>  <!-- 不可以,Vue的属性绑定时不能直接css样式 -->

		<!-- 方式1:变量形式 -->
		<p :class="bb">南京网博</p>

		<!-- 方式2:数组形式,同时引用多个 -->
		<p :class="[bb,dd]">南京网博</p> 

		<!-- 方式3:json形式,常用!!! -->
		 <p :class="{aa:true,cc:flag}">南京网博</p> 
		<<p :class="{aa:num>0}">南京网博</p> 

		<!-- 方式4:变量引用json形式 -->
		 <p :class="hello">南京网博</p> 
		
		<!-- style属性-->
		 <p :style="[xx,yy]">itany</p>
</div>
<style>
		.aa{
			color:red;
			font-size:20px;
		}
		.cc{
			background-color:#ccc;
		}
	</style>
<script src="js/vue.js"></script>
<script>
	let vm = new Vue({
       el:'#demo1', 
		data:{
			bb:'aa',
			dd:'cc',
			flag:true,
			num:-2,
			hello:{aa:true,cc:true},
			xx:{color:'blue',fontSize:'30px'},
			yy:{backgroundColor:'#ff7300'}
		}
	});
</script>

十二、模板

<div id="demo1">
		<input type="text" v-model="msg">

		<h3>aaa<span v-cloak>{{msg}}</span></h3>
		
		<h3 v-text="msg"></h3>

		<h3 v-html="msg"></h3>

		<h3 v-once>{{msg}}</h3>

		<h3 v-pre>{{msg}}</h3>
</div>
	<style>
		/* 必须配置css样式,否则不生效 */
		[v-cloak]{ 
			display:none;
		}
	</style>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
       el:'#demo1', 
      methods:{ 
		data:{
				msg:'welcome to itany'
			},
			created:function(){
				// alert(111);
			}
	}
});
</script>

十三、自定义过滤器

<div id="demo1">
		<h3>{{3 | addZero}}</h3> 
		
		<h3>{{12.345678 | number(2)}}</h3>

		<h3>{{12.045 | number(2)}}</h3> 

		<h3>{{currentTime | date}}</h3>
</div>
<script src="js/vue.js"></script>
<script>
	
		/**
	 * 自定义全局过滤器
	 */
	Vue.filter('addZero',function(data){
		// console.log(data);
		return data<10?'0'+data:data;
	});
	/*Vue.filter('number',(data,n) => {
		// console.log(data,n);
		return data.toFixed(n);
	});*/
	Vue.filter('date',data => {
		let d=new Date(data);
		return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
	});

	let vm = new Vue({
       el:'#demo1', 
      	data:{
			     currentTime:Date.now()
			  },
		filters:{ //局部过滤器
			number:(data,n) => {
				return data.toFixed(n);
			}
		}
	});
</script>

© 著作权归作者所有

共有 人打赏支持
一个yuanbeth
粉丝 82
博文 106
码字总数 67430
作品 0
深圳
程序员
Vue中路由管理器Vue Router使用方式(一)

一、在模块编程中安装VueRouter 1.Npm安装vue-router 2.在main.js中引用并使用VueRouter 3.定义路由,创建路由实例 4.注册路由实例 二、Vue Router基础使用示例 1.App.vue 页面定义,使用rou...

tianma3798
10/16
0
0
2018 我所了解的 Vue 知识大全

年初第一个 flag 就是掌握 vue ,哈哈! Vue ,React ,Angular 三大主流框架,最后我选择学习 Vue ,接触过 React ,自己感觉学习曲线有些陡峭,进而我选择了学习 Vue ,他的学习曲线平稳很...

cacao111
07/11
0
0
Vue+Koa+Mongodb 小练习

Vue+Koa+Mongodb 小练习 作者: Pawn 本文首发: Pawn博客 功能: 基于vue koa mongodb进行登录,注册,留言的简单网站。 体验地址: demo.lcylove.cn github: github.com/LiChangyi/d… 前面...

Pawn2018
09/19
0
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

听说名字越长越好
08/29
0
0
VSCode 搭建Vue开发环境之Vue CLI

一、简介说明 1.关于VS Code开发工具,安装和配置,更多可以参考以前文章 2.关于Vue.js,Vue是一个优秀的渐进式前端框架,不仅易于上手,还便于与第三方库或既有项目整合。 3.关于Vue是使用方...

tianma3798
09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部