zoukankan      html  css  js  c++  java
  • Vue学习

    Vue基础

    el挂载点

    1. Vue实例作用范围(el命中的元素及其后代元素内部都可以使用)
    2. 多种选择器(与css选择器相同)
    3. 不同dom元素(可以使用其余元素,但是不建议使用body和html)
    <body>
    	<div id="app" class="app">
    		{{message}}
    		<span>{{message}}</span>
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			//el:"#app",
    			//el:".app",
    			//el:"div",//注意引号
    			el:"#body",//报错
    			data:{
    				message:"hello vue"
    			}
    		})
    	</script>
    </body>
    

    data数据类型

    1. Vue中用到的数据存放在data中
    2. data中可以写复杂类型的数据
    3. 渲染对象时遵循语法
    <div id="app" >
    		{{message}}
    		<!-- <h2>{{school}}</h2> -->
    		<h2>{{school.name}} {{school.mobile}}</h2>
    		<ul>
    			<li>{{house[0]}}</li>
    			<li>{{house[1]}}</li>
    			<li>{{house[2]}}</li>
    			<li>{{house[3]}}</li>
    		</ul>
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				message:"hello vue",
    				school:{
    					name:"王俊杰",
    					mobile:"138-1916-3182"
    				},
    				house:["仓前","临平","老余杭","临安"]
    			}
    		})
    	</script>
    

    Vue本地应用

    v-text指令

    指令内部也可以插入表达式

    <div id="app" >
    		<!-- 标签内部内容全部替换 -->
    		<h2 v-text="message+'!'"></h2>
    		<!-- 替换部分内容 -->
    		<h2>sublime  {{message+"!"}}</h2>
    		<!-- 字符串表达式拼接 -->
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				message:"hello vue"
    			}
    		})
    	</script>
    

    v-html

    等同于innerHTML,如果内容为html结构,会有效果,如果只是普通内容,不会有显示

    <body>
    	<div id="app" >
    	<p v-text="content"></p>
    	<p v-html="content"></p>
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				content:"<a href='#''>超链接</a>"
    			}
    		})
    	</script>
    </body>
    

    v-on

    为指定的元素绑定事件
    指令可以简写@

    @keyup.enter 回车事件
    <div id="app" >
    	<h2 v-text="food" @click="changefood"></h2>
    	<input type="button" name="" value="v-on指令" v-on:click="doti">
    	<input type="button" name="" value="v-on简写" @click="doit">
    	<input type="button" name="" value="双击事件" @dblclick="dbl">
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				food:"西蓝花炒蛋"
    			},
    			methods:{
    				doti:function(){
    					alert("做it");
    				},
    				doit:function(){
    					alert("做黑马");
    				},
    				dbl:function(){
    					alert("双击事件");
    				},
    				changefood:function(){
    					//console.log(this.food);
    					this.food+="好好吃!"
    				}
    			},
    		})
    	</script>
    

    v-show

    根据表达式的真假,决定元素是否显示,修改元素的display属性

    <div id="app" >
    		<img src="C:UserswjjDesktopImageevaAsuka1.jpg"  v-show=
    		"age>5"/>
    		<!-- "isShow" -->
    		>
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				food:"西蓝花炒蛋",
    				isShow:true,
    				age:16
    			}
    			
    		})
    	</script>
    

    v-if

    根据表达式的真假,决定元素是否显示,直接操作dom树,将元素删除添加,使用方法同v-show

    v-bind

    通过:属性名="表达式" 给属性赋值 类属性推荐使用对象,而不是三元表达式

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<title>Vue01基础入门</title>
    	<link rel="stylesheet" href="">
    	<style>
    		.active{
    			border: 1px solid red;
    		}
    	</style>
    </head>
    <body>
    	<div id="app" >
    		<!-- 注意类型上需要带上引号 -->
    		<img :src="imgSrc" :title="imgTitle" :class="isActiry?'active':''">
    		<img :src="imgSrc" :title="imgTitle" :class="{active:isActiry}">
    		
    		<input type="button" name="" value="改变样式" @click="changeActive">
    	
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				imgSrc:"C:/Users/wjj/Desktop/Image/eva/Asuka/1.jpg",
    				imgTitle:"Asuka",
    				isActiry:false
    			},
    			methods:{
    				changeActive:function(){
    					this.isActiry=!this.isActiry;
    				}
    			}
    			
    		})
    	</script>
    </body>
    </html>
    

    v-for

    根据数据生成列表结构 会根据第一个li,复制n遍,动态修改数组也会动态修改列表内容

    <body>
    	<div id="app" >
    	<ul>
    		<li v-for="(item,index) in food">{{item.name}}:{{item.price}}RMB</li>
    	</ul>
    	
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    			arr:["杭州","上海","北京"],
    			food:[
    			{name:"汉堡",price:"20"},
    			{name:"薯条",price:"10"}
    			]
    			}
    		})
    	</script>
    </body>
    

    v-model

    双向数据绑定(表单元素),可以非常方便的设置和获取表单元素

    <body>
    	<div id="app" >
    		<input type="text" name="" v-model="message" @keyup.enter="getm">
    		<input type="button" name="" value="修改" @click="setm">
    		<p>{{message}}</p>
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				message:"wjj"
    			},
    			methods:{
    				getm:function(){
    					alert(this.message);
    				},
    				setm:function(){
    					this.message="hjy";
    				},
    				add:function(){
    					this.food.push({name:"鸡肉卷",price:"15"})
    				},
    				remove:function(){
    					this.food.shift();
    				}
    			}
    		})
    	</script>
    </body>
    

    Vue网络应用

    使用axios进行交互

    • 使用get方法是,只有一个参数就是url
    • 使用post方法是,需要在第二个参数中加入键值对
    • axios.get("url?key=value&key=value").then(function(response){},function(err))
    • axios.post("url",{key:value,key:value}).then(function(response){},function(err))
    <body>
    	<input type="button" name="" value="get请求" class="get">
    	<input type="button" name="" value="post请求" class="post">
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    	<script>
    		document.querySelector(".get").onclick=function(){
    			axios.get("http://localhost:8080/o2o/shopadmin/getshopbyid?shopId=1").
    			then(function(response){
    				console.log(response.data);
    			},
    			function(err){
    				alert(err)
    			}
    			)
    		}
    
    		document.querySelector(".post").onclick=function(){
    			axios.post("http://localhost:8080/o2o/shopadmin/getshopbyid",{shopId:"1"}).
    			then(function(response){
    				console.log(response.data);
    			},
    			function(err){
    				console.log(err);
    			}
    			)
    		}
    	</script>
    </body>
    

    vue+axios

    axios回调函数中的this已经发生改变,无法定位到data中的数据(将this进行保存)

    <body>
    	<div id="app">
    		<input type="button" name="" value="获取笑话" @click="getjoke">
    		<p >{{joke}}</p>		
    	</div>
    	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    	<script>
    		var app=new Vue({
    			el:"#app",
    			data:{
    				joke:"笑话"
    			},
    			methods:{
    				getjoke:function(){
    					var that=this;
    					axios.get("https://autumnfish.cn/api/joke").then(
    					function(response){
    						that.joke=response.data;
    						console.log(response.data);
    					},function(err){
    						alert(err)
    					})
    				}
    			}
    
    		})
    	</script>
    </body>
    

    使用axios导致后台接收不到数据

    百度到的原因是,后台使用的是SSM框架,Springmvc会从url中取数据,可是我明明是从reques中取数据的,不知道发生了什么。

    解决方案

    还是听说的,听说兼容性比较差,不过我还不配考虑这种高度的问题

    var param = new URLSearchParams();
    param.append('shopId', '1');
    axios.post("http://localhost:8080/o2o/shopadmin/getshopbyid",param).
    then(function(response){
    console.log(response.data);
    },
        function(err){
        console.log(err);
        }
    )
    
  • 相关阅读:
    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。
    PowerDesigner 连接数据库,更新数据库;
    Spark Worker启动Driver和Executor工作流程
    获取spark-submit --files的文件内容
    JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别(转)
    在Java应用中通过SparkLauncher启动Spark任务
    通过thriftserver的beeline/jdbc等方式连接到SparkSQL
    Spark:java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!
    Spark Sql之ThriftServer和Beeline的使用
    Spark SQL读取Oracle的number类型的数据时精度丢失问题
  • 原文地址:https://www.cnblogs.com/wjune-0405/p/12771187.html
Copyright © 2011-2022 走看看