vue基础语法

  1. 模板语法

插值:.html

1.1 插值
1.1.1 文本
{{msg}}
1.1.2 html
使用v-html指令用于输出html代码
1.1.3 属性
HTML属性中的值应使用v-bind指令
1.1.4 表达式
Vue提供了完全的JavaScript表达式支持
{{str.substr(0,6).toUpperCase()}}
{{ number + 1 }}
{{ ok ? ‘YES’ : ‘NO’ }}

  • 我的Id是js动态生成的
  •  <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title></title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>文本</h3>
    					{{msg}}
    				</li>
    				<li>
    					<h3>html片段</h3>
    					{{kiki}}
    					<div v-html="kiki"></div>
    				</li>
    				<li>
    					<h3>属性</h3>
    					<input name="hobby" value="唱歌"/>
    					<input name="hobby" v-bind:value="a"/>
    				</li>
    				<li>
    					<h3>表达式</h3>
    					{{str.substr(0,6).toUpperCase()}}
    					{{ number + 1 }}
    					{{ ok ? 'YES' : 'NO' }}
    					<li v-bind:id="'list-' + id">我的Id是js动态生成的</li>
    				</li>
    			</ul>
    		</div>
    	</body>
    	<script type="application/javascript">
    		new Vue({
    			el:'#app',
    			data() {
    				return {
    					msg: '插入的文本',
    					kiki:'<span style="color:pink;">要显示的html片段</span>',
    					a:'吉他',
    					str:'https://www.baidu.com',
    					number:2,
    					ok:false,
    					id:6
    				}
    			},
    		})
    		
    		
    	</script>
    	
    </html>
    
    

    结果:
    在这里插入图片描述

    1.2 指令
    指的是带有“v-”前缀的特殊属性
    ## demo2.1.html
    1.2.1 核心指令
    (v-if|v-else|v-else-if)/v-show/v-for/v-bind/v-on/v-model
    v-if|v-else|v-else-if:根据其后表达式的bool值进行判断是否渲染该元素
    他们只能是兄弟元素
    v-else-if上一个兄弟元素必须是v-if
    v-else上一个兄弟元素必须是v-if或者是v-else-if
    v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style=“display:none”
    v-for:类似JS的遍历,
    遍历数组: v-for=“item in items”, items是数组,item为数组中的数组元素
    遍历对象: v-for="(value,key,index) in stu", value属性值,key属性名,index下标
    v-bind
    v-on
    v-model:用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值
    v-for/v-model一起绑定[多选]复选框和单选框

    <!DOCTYPE html>
    <html>
      <head>
      	<meta charset="utf-8">
      	<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
      	<title></title>
      </head>
      <body>
      	<div id="app">
      		<ul>
      			<li>
      				<h3>条件指令 if else if,else </h3>
      				<div v-if="score>90">A</div>
      				<div v-else-if="score>80">B</div>
      				<div v-else-if="score>70">C</div>
      				<div v-else-if="score>60">D</div>
      				<div v-else="score>50">E</div>
      				<input v-model="score"/>
      			</li>
      			<li>
      				<h3>条件指令show </h3>
      				<div v-show="kiki">需要展示的内容</div>
      				<input v-model="kiki" />
      			</li>
      			<li>
      				<h3>循环指令v-for </h3>
      				<div v-for="item in hobby" v-model="checkedVals">
      						<input type="checkbox" name="hobby":value="item.id" v-model="checkedVals"/>{{item.name}}
      				</div>
      				<input v-model="checkedVals"/>
      				
      				<select name="likes" v-model="selectVals">
      					<option v-for="item in hobby":value="item.id" >{{item.name}}</option>
      				</select>
      				<input v-model="selectVals"/>
      				
      			</li>
      			
      			<li>
      				<h3>动态参数</h3>
      				<button v-on:click="clickme">点我</button>
      				<input v-model="evname" />
      			</li>
      		</ul>
      	</div>
      </body>
      <script type="text/javascript">
      	new Vue({
      		el:'#app',
      		data() {
      			return {
      					score:80,
      					kiki:'',
      					hobby:[{id:1,
      					name:'吉他',
      					
      					},
      					{id:2,
      					name:'唱歌',
      					
      					},
      					{id:3,
      					name:'跳舞',
      					
      					}],
      					checkedVals:[],
      					selectVals:'',
      					evname:'click'
      			}
      		},
      		methods:{
      			clickme(){
      				alert('橙橙 我爱你');
      			}
      		}
      	})
      	
      	
      </script>
    </html>
    
    

    结果:
    在这里插入图片描述

    1. 过滤器
      全局过滤器
      Vue.filter(‘filterName’, function (value) {
      // value 表示要过滤的内容
      });
      局部过滤器
      new Vue({
      filters:{‘filterName’:function(value){}}
      });

      vue允许你自定义过滤器,被用作一些常见的文本格式化,格式如下:

      {{ name | capitalize }}

      注1:过滤器函数接受表达式的值作为第一个参数
      注2:过滤器可以串联
      {{ message | filterA | filterB }}
      注3:过滤器是JavaScript函数,因此可以接受参数:
      {{ message | filterA(‘arg1’, arg2) }}

      注4:js定义一个类
      function Stu(){};
      Stu.prototype.add(a,b){};//添加一个新的实例方法
      Stu.update(a,b){};//添加一个新的类方法

      案例:首字母大写/日期格式化

     <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>过滤器</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>局部过滤的注册</h3>
    					{{msg}}<br />
    					{{msg.substr(0,6).toUpperCase()}}<br />
    					{{msg|a}}<br />
    				</li>
    				<li>
    					<h3>局部过滤的串联</h3>
    					{{msg}}<br />
    					{{msg |a |b}}<br />
    				</li>
    				<li>
    					<h3>全局过滤器的注册</h3>
    					{{msg}}<br />
    				</li>
    			</ul>
    		</div>
    	</body>
    	<script type="text/javascript">
    		Vue.filter("c",(v)=>{
    			return v.substr(0,1).toUpperCase()+v.substr(1,17);
    		})
    		
    		new Vue({
    			el:'#app',
    			data() {
    				return {
    					msg:'https://www.baidu.com'
    				}
    			},
    			filters:{
    				a(v){
    					return v.substr(0,17).toUpperCase();
    				},
    				b(v){
    					return v.substr(0,8).toLowerCase()+v.substr(8,17).toUpperCase();;
    				}
    				
    			}
    		})
    		
    	</script>
    	
    </html>
    	
    

    在这里插入图片描述

    1. 计算属性
      计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新
      computed:{}

    2. 监听属性
      监听属性 watch,我们可以通过 watch 来响应数据的变化
      watch:{}

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>计算机和监听属性</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>计算机属性</h3>
    					橙子单价:<input type="text" v-model="price" /><br />
    					购买的数量:<input type="text" v-model="num" /><br />
    					小计:{{total}}
    				</li>
    				<li>
    					<h3>监听器</h3>
    					km:<input type="text" v-model="km"/><br />
    					m:<input type="text" v-model="m" />
    				</li>
    			</ul>
    		</div>
    	</body>
    	<script type="text/javascript">
    		new Vue({
    			el:'#app',
    			data() {
    				return {
    					price:6,
    					num:2,
    					km:1,
    					m:1000
    				}
    			},
    			computed:{
    				total(){
    					return this.price*this.num;
    				}
    			},
    			watch:{
    				km(v){
    					this.m=v*1000;
    				},
    				
    				m(v){
    					this.km=v/1000;
    				}
    			}
    			
    		})
    		
    		
    	</script>
    	
    </html>
    
    

    结果:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值