Web-Day11笔记

一、上堂回顾

1.什么是ajax

​ 异步的javascript和xml

2.作用:

​ a.与服务器之间进行异步交互

​ b.页面的局部刷新

3.表单的get和post

​ get和post之间的区别

4.ajax中的get和post

​ ajax的工作流程

​ a.创建核心对象【XMLHttpRequest/ActiveObject】

​ b.打开与服务器之间的连接:open()

​ c.发送数据:send()

​ d.建立监听,监听服务器的响应

​ onreadyStateChange事件

​ readyState:当前服务器的状态

​ status:状态码

​ responseText:响应

二、jQuery和AJAX

1.load方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
	</head>
	<body>
		<!--
			load(url[,data,callback])  可以在一个指定的标签上直接加载一个html页面
			
				url:请求html页面的url地址
				data:可选参数,发送给服务器的数据,以key:value的形式传递
				callback:回调函数,请求完成的时候自动调用	,无论请求是否成功
				
			BOM	
			window.location.href = "xx.html"
			window.location.assign("xx.html")
			window.location.replace("xx.html")
		-->
		
		<div id="box"></div>
		<button id="btn">请求数据</button>
		
		
		<script>
			$(function(){
				/*$("#btn").click(function(){
					$("#box").load("red.html");
				});*/
				
				
				$("#btn").click(function(){
					$("#box").load("red1.html",function(){
						console.log("over");
					});
				});
			})
		</script>
		
	</body>
</html>

2. . g e t ( ) .get()和 .post()

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
	</head>
	<body>
		<form>
			<input type="text" id="username" />
			<input type="text" id="content" />
			<!--submit:点击按钮的时候会将当前表单刷新-->
			<input type="button" id="btn" value="提交"/>
			<!--加载服务器的响应-->
			<div id="responseText"></div>
		</form>
		
		<script>
			$(function(){
				/*
				 * $.get(url[,data,callback,type]),类似于ajax的原生的get
				 * 	url:请求的服务器的地址
				 *  data:发送给服务器的数据,以key:value的形式传递
				 * 	callback:请求完成之后的回调函数,可以获取服务器的响应,注意:回调函数中有默认参数
				 *  type:预判服务器数据的类型,可以省略,jQuery可以自动判断
				 * 
				 */
				/*$("#btn").click(function(){
					//和服务器之间进行交互
					$.get("http://127.0.0.1/get1.php",{username:$("#username").val(),content:$("#content").val()},function(data){
						//console.log(data);
						//服务器返回的结果为一个json
						
						var result = JSON.parse(data);
						console.log(result);
						
						//将服务器的响应显示到div上
						$("#responseText").html("用户名:" + result.username + "内容:" + result.content);
					})
				});*/
				
				
				/*
				 * $.post(url[,data,callback,type]),类似于ajax的原生的post
				 * 	url:请求的服务器的地址
				 *  data:发送给服务器的数据,以key:value的形式传递
				 * 	callback:请求完成之后的回调函数,可以获取服务器的响应,注意:回调函数中有默认参数
				 *  type:预判服务器数据的类型,可以省略,jQuery可以自动判断
				 * 
				 */
				$("#btn").click(function(){
					//和服务器之间进行交互
					$.post("http://127.0.0.1/post1.php",{username:$("#username").val(),content:$("#content").val()},function(data){
						//console.log(data);
						//服务器返回的结果为一个json
						
						var result = JSON.parse(data);
						console.log(result);
						
						//将服务器的响应显示到div上
						$("#responseText").html("用户名:" + result.username + "内容:" + result.content);
					})
				});
				
			})
		</script>
		
	</body>
</html>

3.$.getscript()方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
		<!--<script type="text/javascript" src="js/test.js"></script>-->
	</head>
	<body>
		<!--
			$.getScript(url,callback)
				url:需要加载的js文件的路径
				callback:js文件加载完成之后的回调函数
				
			使用$.getScript函数之后,不仅可以像script标签一样加载js文件,而且js文件在代码运行的过程中可以自动执行
			提供了页面的工作效率
				
		-->
		
		<div id="box">hello</div>
		<button id="btn">点击</button>
		
		
		<script>
			$(function(){
				$.getScript("js/test.js",function(){
					//console.log("over");
					$("#btn").click(function(){
						$("#box").css("background-color","red");
					})
				})
			})
		</script>
		
	</body>
</html>

4.$.ajax()

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
	</head>
	<body>
		<!--
			$.ajax(options)    自定义封装的ajax函数
				options:字典,以key:value的方式传参,
				参数包含:
				请求的方式type【get、post】,
				请求的服务器的地址url,
				上传给服务器的数据data[key:value]
				请求完成之后的回调函数success
				
				
			作用:综合了$.get和$.post函数的功能
				
		-->
		
		<form>
			<input type="text" id="username" />
			<input type="text" id="content" />
			<!--submit:点击按钮的时候会将当前表单刷新-->
			<input type="button" id="btn" value="提交"/>
			<!--加载服务器的响应-->
			<div id="responseText"></div>
		</form>
		
		<script>
			$(function(){
				$("#btn").click(function(){
					$.ajax({
						type:"get",
						url:"http://127.0.0.1/get1.php",
						data:{username:$("#username").val(),content:$("#content").val()},
						success:function(responseText){
							//console.log(responseText);
							
							var result = JSON.parse(responseText);
							
							$("#responseText").html("ajax用户名:" + result.username + "ajax内容:" + result.content);
						}
					});
				})
			})
		</script>
		
	</body>
</html>

三、Bootstrap

主要用于开发响应式布局

响应式布局:根据浏览器或者移动端设备的屏幕大小标签的自适配

1.基本模板

加载cdn资源

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
  	<!--配置信息-->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <!--页面的宽度跟当前设备的宽度相同,初始的放大倍数为1-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 注意:上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <!-- 加载Bootstrap中的css -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">

  </head>
  <body>
    <h1>你好,世界!</h1>

    <!-- jQuery ,注意:Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边 -->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
  </body>
</html>

加载本地资源

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1" />
		<title></title>
		
		<!--引入css文件-->
		<link type="text/css" rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.min.css" />
	</head>
	<body>
	
	</body>
</html>

2.基本使用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1" />
		<title></title>
		
		<!--引入css文件-->
		<link type="text/css" rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.min.css" />
	</head>
	<body>
		<!--按钮-->
		<a class="btn btn-default" href="#" role="button">Link</a>
		<button class="btn btn-default" type="submit">Button</button>
		<input class="btn btn-default" type="button" value="Input">
		<input class="btn btn-default" type="submit" value="Submit">
		
		<!--预定义样式-->
		<!-- Standard button -->
		<button type="button" class="btn btn-default">(默认样式)Default</button>
		
		<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
		<button type="button" class="btn btn-primary">(首选项)Primary</button>
		
		<!-- Indicates a successful or positive action -->
		<button type="button" class="btn btn-success">(成功)Success</button>
		
		<!-- Contextual button for informational alert messages -->
		<button type="button" class="btn btn-info">(一般信息)Info</button>
		
		<!-- Indicates caution should be taken with this action -->
		<button type="button" class="btn btn-warning">(警告)Warning</button>
		
		<!-- Indicates a dangerous or potentially negative action -->
		<button type="button" class="btn btn-danger">(危险)Danger</button>
		
		<!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
		<button type="button" class="btn btn-link">(链接)Link</button>
		
		<!--表单-->
		<form>
		  <div class="form-group">
		    <label for="exampleInputEmail1">Email address</label>
		    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
		  </div>
		  <div class="form-group">
		    <label for="exampleInputPassword1">Password</label>
		    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
		  </div>
		  <div class="form-group">
		    <label for="exampleInputFile">File input</label>
		    <input type="file" id="exampleInputFile">
		    <p class="help-block">Example block-level help text here.</p>
		  </div>
		  <div class="checkbox">
		    <label>
		      <input type="checkbox"> Check me out
		    </label>
		  </div>
		  <button type="submit" class="btn btn-default">Submit</button>
		</form>
		
		<form class="form-horizontal">
		  <div class="form-group">
		    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
		    <div class="col-sm-10">
		      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
		    </div>
		  </div>
		  <div class="form-group">
		    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
		    <div class="col-sm-10">
		      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
		    </div>
		  </div>
		  <div class="form-group">
		    <div class="col-sm-offset-2 col-sm-10">
		      <div class="checkbox">
		        <label>
		          <input type="checkbox"> Remember me
		        </label>
		      </div>
		    </div>
		  </div>
		  <div class="form-group">
		    <div class="col-sm-offset-2 col-sm-10">
		      <button type="submit" class="btn btn-default">Sign in</button>
		    </div>
		  </div>
		</form>
		
		<div class="table-responsive">
		<table class="table table-hover">
  			<tr>
  				<td>111</td>
  				<td>2222</td>
  			</tr>
  			<tr>
  				<td>111</td>
  				<td>2222</td>
  			</tr>
  			<tr>
  				<td>111</td>
  				<td>2222</td>
  			</tr>
  			<tr>
  				<td>111</td>
  				<td>2222</td>
  			</tr>
		</table>
		</div>
	</body>
</html>

3.栅格系统

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
  	<!--配置信息-->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <!--页面的宽度跟当前设备的宽度相同,初始的放大倍数为1-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 注意:上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <!-- 加载Bootstrap中的css -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">

  </head>
  <body>
  	
  	<div class="row">
		  <div class="col-md-1">
		  	
		  </div>
		  <div class="col-md-1">
		  	
		  </div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		  <div class="col-md-1">.col-md-1</div>
		</div>
		<div class="row">
		  <div class="col-md-8">.col-md-8</div>
		  <div class="col-md-4">.col-md-4</div>
		</div>
		<div class="row">
		  <div class="col-md-4">.col-md-4</div>
		  <div class="col-md-4">.col-md-4</div>
		  <div class="col-md-4">.col-md-4</div>
		</div>
		<div class="row">
		  <div class="col-md-6">.col-md-6</div>
		  <div class="col-md-6">.col-md-6</div>
		</div>
   
  </body>
</html》

四、VUE.js

1.简介

前端框架:jQuery,Angular,React,VUE等,VUE同时具备Angular和React框架的特点

优点:轻量级,api简单,文档齐全

Vue.js,类似view,是一套构建用户界面的渐进式框架

什么是渐进式框架?

​ 原始的前端开发【html,css,js】中,为了完成某些功能,需要通过js在html页面中获取标签对象【dom节点】,随后获得的dom节点可以在其中绑定事件,进行一系列的操作,如果功能量大的情况下,原生的js实现的代码后期维护比较困难

​ 解决:可以将js分为三部分:数据【Model】,逻辑控制【*】,视图【View】,Model只负责数据部分,View只负责更改样式,逻辑控制负责联系数据和视图,好处:如果某个部分发生改变,对其他的部分不会造成影响

​ 开发模式,就是所谓的MV*模式,包括MVC,MVT,MVVM等,都是让数据和视图分离

具有响应式的vue实例中,DOM状态只是数据状态的一个映射,UI=VM,当等式右边的数据发生改变的时候,页面展示部分的UI也会随着发生改变

2.安装和简单使用

2.1安装

a.可以从官网下载https://cn.vuejs.org

​ 使用方式:用script标签引入,和普通js文件的引入方式完全相同,注意:vue会被注册为一个全局变量

b.引入cdn

c.npm

​ 注意:需要先安装Node环境,npm是Node.js的管理工具

​ 因为npm安装速度比较慢,可采用淘宝的镜像

2.2第一个vue程序
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
			<p>{{ text }}</p>
			<h2>{{ func1() }}</h2>
		</div>
	</body>
	
	<script>
		/*
		 * 每个vue应用都需要进行实例化,语法:
		 * var vm = new Vue({
		 * 		//选项
		 * })
		 * 
		 * 说明vue构造器中的参数:
		 * 	a.整个参数实际上是一个json对象【在json,{}代表一个对象,[]代表一个数组】
		 * 	b.el,element,表示DOM元素中的id属性的值,作用:在vue代码中修改的内容跟指定标签的内部有关,外部标签不受任何影响
		 *  c.data,用于定义属性,注意:其中的属性需要自定义,text为自定义的标识符
		 * 	d.methods,用于定义函数,函数的定义和调用和js中的用法完全相同,func1为函数名
		 */
		
		
		//创建一个vue的实例,使用new关键字
		new Vue({
			el:"#box",
			data:{
				text:"hello vue.js"
			},
			methods:{
				func1:function(){
					return "第一个vue.js程序";
				}
			}
		});
		
	</script>
	
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>需要注意的问题</title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
			<p>{{ name }}</p>
			<p>{{ age }}</p>
			<p>{{ sex }}</p>
		</div>
	</body>
	
	<script>
		/*特殊情况一:当一个vue实例创建完成之后,它向vue的响应式系统中添加data对象
		 * 当相应的属性值发生改变的时候,html视图也会随着发生改变
		 */
		//数据对象
		var data = {name:"张三",age:18,sex:"女"};
		
		//vue的对象
		var per = new Vue({
			el:"#box",
			data:data,
			methods:{
				show:function(){
					return "姓名:" + this.name + "年龄:" + this.age + "性别:" + this.sex;
				}
			}
		})
		
		/*
		 * class Person():
		 * 		def __init__(self,name,age,sex):
		 * 			self.name = name;
		 * 			....
		 * 		def show(self):
		 * 			return  "姓名:" + self.name;
		 * 
		 * per = Person("",36,"");
		 * print(per.show())
		 */
		
		//结果为true。说明两个变量引用了同一个对象
		document.write(per.name == data.name);  //true
		
		document.write("<br />");
		
		//查看对象属性和原始数据之间的关系
		//1.修改对象属性,查看原始数据?
		per.name = "jack";
		document.write(data.name);
		
		document.write("<br />");
		
		//2.修改原始数据,查看对象属性?
		data.name = "rose";
		document.write(per.name);
		//结论:原始数据和对象数据之间有着联系,一个改变,另外一个随着改变
		
		
		/*
		 * 特殊情况二:vue属性提供了一些带有前缀$的属性和方法,为了和用户自定义的属性或者方法区分开
		 */
		
		/*
		 * ==和 ===之间的区别
		 * 	==:只比较值,不比较类型
		 * 		1 == 1  true
		 * 		1 == "1"  true
		 *  ===:用于严格比较,不会进行自动转换,同时比较值和类型,如果二者都相同,才返回true
		 * 		1 === 1	true
		 * 		1 === "1" fasle  
		 */
		document.write(per.$data === data);  //true
		
		document.write("<br />");
		
		
		document.write(per.$el === document.getElementById("box"));  //true

	</script>
	
</html>
2.3核心思想

a.数据驱动【双向的数据绑定】

​ DOM是数据的一种双向映射

​ vue中的双向:html标签数据绑定到vue的对象上,将vue的数据加载到html标签上

b.组件化

​ 扩展html元素,封装可重用的代码

​ 可以自定义html标签:

3.模板指令

a.文本内容:使用{{ … }}

b.html内容:使用v-html指令

c.属性:使用v-bind指令

d.参数:v-bind:参数=值

完整语法
<a v-bind:href="url"></a>
简写
<a :href="url"></a>

e.用户输入:使用v-model指令

f.事件,使用v-on指令

<!-- 完整语法 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
		<style>
			.cls1{
				background-color: red;
			}
		</style>
	</head>
	<body>
		<!--1.文本内容-->
		<div id="box1">
			<p>{{ message1 }}</p>
		</div>
		
		<!--2.html内容-->
		<div id="box2">
			<div v-html="message2"></div>
		</div>
		
		<!--3.参数-->
		<div id="box3">
			<!--<a v-bind:href="url">超链接</a>-->
			<a :href="url">超链接</a>
		</div>
		
		<!--4.属性-->
		<div id="box4">
			<!--true:需要使用类选择器-->
			<div v-bind:class="{'cls1':use}">hello</div>
		</div>
		
		<!--5.用户输入-->
		<div id="box5">
			<p>{{ text }}</p>
			<input v-model="text"  />
		</div>
		
		<!--6.事件绑定-->
		<div id="box6">
			<input type="button" value="按钮一" v-on:click="func1" />
			<input type="button" value="按钮二" @click="func1"/>
		</div>
		
	</body>
	
	<script>
		//1.文本内容
		var vueObj1 = new Vue({
			el:"#box1",
			data:{
				message1:"hello js"
			}
		})
		
		//2.html内容
		new Vue({
			el:"#box2",
			data:{
				message2:"<p>学生信息</p>"
			}
		})
		
		//3.参数
		new Vue({
			el:"#box3",
			data:{
				url:"http://www.baidu.com"
			}
		})
		
		
		//4.属性
		new Vue({
			el:"#box4",
			data:{
				use:false
			}
		})
		
		//5.用户输入
		new Vue({
			el:"#box5",
			data:{
				text:"请输入内容"
			}
		})
		
		//6.事件绑定
		new Vue({
			el:"#box6",
			methods:{
				func1:function(){
					alert("事件的绑定");
				}
			}
		})
	</script>
	
</html>

4.条件和循环语句

4.1v-if/v-show
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
			<!--
				if isShow:
					xxx
			-->
			<!--
				v-if是根据属性值为true还是false来决定是否要插入指定的元素
			-->
			<p v-if="isShow">hello</p>
			<p v-show="isShow">hello</p>
		</div>
	</body>
	
	<script>
		
		new Vue({
			el:"#box",
			data:{
				isShow:false
			}
		})
	</script>
	
</html>
4.2v-for
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<ul class="cls">
			<!--for 变量 in 数组-->
			<li v-for="item in list">
				{{ item.text }}
			</li>
		</ul>
	</body>
	
	<script>
		
		new Vue({
			el:".cls",
			data:{
				list:[//数组
					{text:"01.js"},
					{text:"02.html"},
					{text:"03.css"}
				]
			}
		})
	</script>
	
</html>

5.重要选项

el:元素

data:数据对象,用来给html元素绑定数据,vue框架会自动监视data里面数据的变化,自动将数据更新到对应的html元素上

​ 工作原理:vue会自动将data里面的数据进行递归抓取转换成getter和setter,然后就会自动更新html标签上的内容

methods:函数,代表vue对象的方法,方法中的this关键字自动绑定到当前的vue实例

computed:计算属性,在做数据绑定的过程中,数据要经过处理才能显示到html页面上,属性可以是一个方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
			{{ showStr }}
		</div>
	</body>
	
	<script>
		new Vue({
			el:"#box",
			data:{
				totalPrice:30
			},
			computed:{ //vue的计算属性
				//计算属性,该属性是一个方法
				showStr:function(){
					if(this.totalPrice < 20){
						return "金额小于20,没有优惠";
					}else{
						return "金额大于20,可以享受优惠";
					}
				}
			}
		})
		
	</script>
	
</html>

watch:监听

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入vue库-->
		<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
			千米:<input type="text" v-model="qianmi"/>
			米:<input type="text" v-model="mi"/>
		</div>
		<!--记录修改前后的值-->
		<p id="change"></p>
	</body>
	
	<script>
		var vm  = new Vue({
			el:"#box",
			data:{
				qianmi:0,
				mi:0
			},
			//监听
			watch:{
				//默认参数val,
				qianmi:function(val){
					this.qianmi = val;
					this.mi = val * 1000;
				},
				mi:function(val){
					this.qianmi = val / 1000;
					this.mi = val;
				}
			}
		})
		
		//$watch()是一个实例方法
		//参数:监听的名称,需要触发的函数
		vm.$watch("qianmi",function(nValue,oValue){
			
			document.getElementById("change").innerHTML = "修改前:" + oValue + "修改后:" + nValue;
		})
		
	</script>
	
</html>

猜你喜欢

转载自blog.csdn.net/qq_41470296/article/details/87922530