VUE01_基本使用、插值表达式、指令、事件绑定、分支循环结构

①. vue入门概述

  • ①. vue的概述 ①. Vue:渐进式JavaSctipt框架 ②. https://cn.vuejs.org/v2/guide/

  • ②. 入门代码展示:

	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>Document</title>
	</head>
	
	<body>
	    <div id="app">   
	        <div>{{msg}}</div>
	        <div>{{1 + 2}}</div>
	        <div>{{msg + '' + 123}}</div>
	        <div>{{msg + "" + 123}}</div>
	    </div>
	<script src="../js/vue.js"></script>
	<script>
	    var appel=document.getElementById("app");
	    var vm=new Vue({
	         el:'#app',//元素的挂载位置(值可以是css选择器或者DOM元素)
	         //el:appel
	         data:{    //模型数据:值是一个对象
	            msg:'xiaozhi'
	         }
	    });
	</script>
	</body>
	</html>

②. 插值表达式

  • ①. 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值,Mustache 标签将会被替代为对应数据对象上属性的值。无论何时,绑定的数据对象上属性发生了改变,插值处的内容都会更新

  • ②. Vue.js 都提供了完全的 JavaScript 表达式支持。

	<font color="blue">{{ number + 1 }} 
	<font color="blue">{{ ok ? 'YES' : 'NO' }}
	<font color="blue">{{ reversedMessage() }}插值表达式可以定义方法
    {{scope.row.TASKSTATUS == '0' ?"未审批" : scope.row.TASKSTATUS=='1' ? "已通过" : '已驳回'}}
  • ③. 如下不会生效
	<!-- 这是语句,不是表达式 -->
	{{ var a = 1 }}
	<!-- 流控制也不会生效,请使用三元表达式 --> 
	{{ if (ok) { return message } }}

③. 指令(格式:以v-开始(比如:v-cloak))

  • ①. 前言:出现闪烁问题:
   <div id="app">
        <!-- 在网速很慢的情况下,会先出现{{msg}},后出现测试-->
        {{msg}}
    </div>
    <script src="../js/vue.js"></script>
    <script>
    var vm=new Vue({
            el:'#app',
            data:{   
                msg:"测试"
            }
    });
    </script>
  • ②. 关于指令详解:
    在这里插入图片描述
  • ③. 代码展示:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        [v-cloak]{
            display:none;
        }
    </style>
</head>
<body>
    <div id="app">
        <div v-cloak>{{msg}}</div>
        <div v-text="msg"></div>
        <div v-html="msg1"></div>
        <div v-pre>{{msg1}}</div>
    </div>
   
    <script src="../js/vue.js"></script>
    <script>
    var vm=new Vue({
            el:'#app',//元素的挂载位置(值可以是css选择器或者DOM元素)
            //el:appel
            data:{    //模型数据:值是一个对象
              msg:'hello xiaozhi',
              msg1:'<h1>v-html</h1>'
            }
    });
    </script>
</body>
</html>

④. 事件绑定

①. v-on:click

  • ①. <input type=‘button’ v-on:click=‘num++’/>
    <input type=‘button’ @click=‘num++’/> (简写)

  • ②. 如果事件直接绑定函数名称,那么默认会传递事件对象作为第一个参数(handle)

  • ③. 如果事件绑定函数调用,事件对象必须作为最后一个参数显示传递,并且事件对象名称必须是固定的$event(handle( ))

  • ④. 代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <div v-text="msg"></div>
        <!--直接绑定函数名称
        如果事件直接绑定函数名称,那么默认会传递事件对象作为第一个参数
        如果事件绑定函数调用,事件对象必须作为最后一个参数显示传递,并且事件对象名称必须是固定的$event
        -->
        <button v-on:click="handle">按钮1</button>
        <!--调用函数  -->
        <button @click="handle()">按钮2</button>
        <!--最后一个参数是envent -->
        <button @click="handleParam(123,$event)">带参数的方法</button>
    </div>
    <script src="../js/vue.js"></script>
    <script>
    var vm=new Vue({
            el:'#app',
            data:{    
                msg:'1' 
            },
            methods:{
                //这里的event可以不写
                handle:function(event){
                 alert(event.target.tagName);
                },
                handleParam:function(p,event){
                  console.log(p);
                  console.log(event.target.tagName);//button
                  console.log(event.target.innerHTML);//带参数的方法
                }
            }
    });
    </script>
</body>
</html>

②. v-bind属性绑定

  • ①.以下两种写法等价:
 <a v-bind:href='url'>跳转</a>
 <a :href='url'>跳转</a>
  • ②. 字符串拼接
    所以,要想在v-bind指令中使用字符串拼接,只需要结合引号即可
	<span :text=' "we" + 1 '>使用</span>
	会渲染成:
	<span text='we1'>使用</span>
  • ③. 运算
	<div :text='1 + 2'>test</div>
	渲染成:
	<div text="3">test</div>
  • ④. 调用函数
	 <div :text='getText()'>test</div>
	 ......
	 <script>
	export default {
	  methods: {
	    getText() {
	      return "this is text"
	    }
	  }
	}
	</script>
	渲染成:
	<div text="this is text">test</div>
  • ⑤. 使用对象
	<template>
	  <div class="hello">
	    <div :text='obj'>test</div>
	  </div>
	</template>
	
	<script>
	export default {
	  name: 'HelloWorld',
	  data () {
	    return {
	      obj: Object()
	    }
	  }
	}
	</script>
	结果为:
	<div text="[object Object]">test</div>
	如果对象有toString方法:
	<template>
	  <div class="hello">
	    <div :text='obj'>test</div>
	  </div>
	</template>
	
	<script>
	var obj = Object()
	obj.toString = function(){
	  return "data in obj"
	}
	export default {
	  name: 'HelloWorld',
	  data () {
	    return {
	      obj: obj
	    }
	  }
	}
	</script>
	则渲染的是toString方法的值:
	<div text="data in obj">test</div>
  • ⑥. 使用数组
	<template>
	  <div class="hello">
	    <div :text='array'>test</div>
	  </div>
	</template>
	
	<script>
	var array = Array()
	array[0] = "1"
	array[1] = "2"
	export default {
	  name: 'HelloWorld',
	  data () {
	    return {
	      array: array
	    }
	  }
	}
	</script>
	渲染为:
	<div text="1,2">test</div>
  • ⑦. 动态绑定class或者style中是否存在
    在这里插入图片描述

③. 分支结构(if-else-v-show)

  • ①. 分支概述:
    在这里插入图片描述
  • ②. 代码展示:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
     v-show的原理:控制元素样式是否显示display:none
     v-if控制元素是否渲染到页面(变化的比较少)
     v-show控制元素是否显示(已经渲染到了页面)[变化的比较大]
     -->
    <div id="app">
       <div v-if='score>90'>优秀</div>
       <div v-else-if='score<90&&score>80'>良好</div>
       <div v-else-if='score<=80&&score>70'>及格</div>
       <div v-else></div>
       <div>下面这个是v-show</div>
       <div v-show='flag'>显示</div>

    </div>
    <script src="../js/vue.js"></script>
    <script>
    var vm=new Vue({
            el:'#app',
            data:{    
              score:'50',
              flag:true
            }
    });
    </script>
</body>
</html>
  <el-table-column :prop="c.field" :label="c.title" :width="c.width" v-for="(c,i) in columns" :key="i">
    <template slot-scope="scope" >
      <span v-if="c.field=='ISPAY'"> {{ scope.row.ISPAY=='0'?'未支付':'未支付' }} </span>
      <span v-else-if="c.field=='TASKSTATUS'">  {{scope.row.TASKSTATUS == '0' ?"未审批" : scope.row.TASKSTATUS=='1' ? "已通过" : '已驳回'}}</span>
      <span v-else-if="c.field=='APPLYTIME'"> {{scope.row.APPLYTIME? formatDate(scope.row.APPLYTIME):"" }} </span>
      <span v-else> {{scope.row[scope.column.property]}}</span>
    </template>
  </el-table-column>

④. v-for循环结构

  • ①. 循环遍历数组
	<li v-for='item in list'>{{item}}</li>
	<li v-for='(item,index) in list'>{{item}} + '---' +{{index}}</li>
	<li :key='item.id' v-for='(item,index) in list'>{{item}} + '---' {{index}}</li>
	注意:key的作用:帮助Vue区分不同的元素,从而提高性能
  • ②. 循环遍历对象
	<div v-for='(value, key, index) in object'></div>
	<div v-if='value==12' v-for='(value, key, index) in object'></div>
  • ③. v-for代码演示
	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>Document</title>
	</head>
	<body>
	    <div id="app">
	        <div>数组(不带index的)</div>
	        <ul>
	            <li v-for='item in fruits'>{{item}}</li>
	        </ul>
	        <div>数组(带index的)</div>
	        <ul>
	            <li v-for='(item,index) in fruits'>{{item}}----{{index}}</li>
	        </ul>
	        <div>数组(复杂数据类型[不带index的])</div>
	        <ul>
	            <li v-for='item in myFruit'>{{item.ename+'----'+item.cname}} </li>
	        </ul>
	        <div>数组(复杂数据类型[带index的])</div>
	        <ul>
	            <li v-for='(item,index) in myFruit'>{{item.ename}}  ---- {{item.cname}} --- {{index}}  </li>
	        </ul>
	        <div>key的作用:帮助Vue区分不同的元素,从而提高性能</div>
	        <ul>
	            <li :key='item.id' v-for='(item,index) in myFruit'>{{item.ename}}  ---- {{item.cname}} --- {{index}}  </li>
	        </ul>
	        <div>对象</div>
	        <div v-for='(value,key,index) in product'>{{key+'-----'+value+'-----'+index}}</div>
	    </div>
	    <script src="../js/vue.js"></script>
	    <script>
	    var vm=new Vue({
	            el:'#app',
	            data:{    
	              fruits:['apple','orange','banana'],
	              myFruit:[
	                  {id:1,ename:'apple',cname:'苹果'},
	                  {id:2,ename:'banana',cname:'香蕉'}
	                  ],
	            product:{pname:"电视机",price:6000}  
	            }
	    });
	    </script>
	</body>
	</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所得皆惊喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值