Vue条件循环判断+计算属性+绑定样式v-bind的实例


Posted in Javascript onSeptember 18, 2018

Vue.js条件与循环

1、条件判断

(1)v-if,

<div id="app">
  <p v-if="seen">现在你看到我了</p>
  <template v-if="ok">
     <h1>菜鸟教程</h1>
  </template>
</div>
 
<script>
 new Vue({
   el:'#app',
   data:{
      seen:true,
      ok:true
   }
 });
</script>

(2)v-else-if

(3)v-else

<div id="app">
  <div v-if="type === 'A' ">A</div>
  <div v-else-if="type === 'B' ">B</div>
  <div v-else="type === 'C' ">C</div>
</div>
 
<script>
  new Vue({
   el:'#app';
   data:{
      type:'C'
   }
  });
</script>

(4)v-show

除了v-if、v-else-if、v-else,还可以使用v-show指令来根据条件展示元素

<div id="app">
  <h1 v-show="ok">Hello</h1>
</div>
 
<script>
 new Vue({
   el:'#app',
   data:{
     ok:true
   }
 });
</script>

2、循环语句

使用v-for指令

(1)简单的v-for

<ol>
  <li v-for="site in sites">{{ site.name }}</li>
 </ol>

(2)模板中的v-for

<template v-for="site in sites">
      <li> {{ site.name }} </li>
      <li> ----- </li>
    </template>

综合小案例,如下:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script type="text/javascript" src="js/vue.min.js" ></script>
 </head>
 <body>
 <div id="app">
  <ol>
  <li v-for="site in sites">
   {{ site.name }}
  </li>
  </ol>
  
  <!--利用模板化template进行循环-->
  <ul>
  <template v-for="site in sites">
   <li>{{ site.name }}</li>
   <li>-------</li>
  </template>
  </ul>
 </div>
 
 <script>
  new Vue({
   el:'#app',
   data:{
   sites:[
    {name:'Zhao'},
    {name:'Xiao'},
    {name:'yan'}
   ]
   }
  });
 </script>
 </body>
</html>

(3)v-for迭代对象

a.一个参数

原理:<li v-for="value in object"> {{ value }}

b.两个参数

原理:<li v-for="(value,key) in object" > {{ key }} : {{ value }}

(4)v-for迭代整数

<div id="app">
 <ul>
  <li v-for="n in 10">
   {{ n }}
  </li>
 </ul>
</div>
 
 
<script>
new Vue({
 el: '#app'
})
</script>

3、计算属性computed

计算属性主要适用于一些复杂的逻辑关系,

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>计算属性</title>
 <script type="text/javascript" src="js/vue.min.js" ></script>
 </head>
 <body>
 <div id="app">
  <p>原始字符串:{{message}}</p>
  <p>计算后反转字符串:{{reversedMessage}}</p>
 </div>
 
 <script>
  var vm=new Vue({
  el:'#app',
  data:{
   message:'Runoob'
  },
  computed:{
   //计算属性reversedMessage的getter
   reversedMessage:function(){
   //this指向vm实例
   return this.message.split('').reverse().join('');
   }
  }
  })
 </script>
 </body>
</html>

由于computed用于计算属性,而reversedMessge相对于computed的属性的获得,其this指向的是vm的实例,当message发生改变的时候,对应的reversedMessage也会发生相对应改变。

扩展:computed VS methods

由于computed与methods实现效果相同,所以也可以使用methods来替代computes,

区别如下:

a、computed基于它的依赖缓存,只有相关依赖发生改变时,才会重新取值;

b、methods而言,在重新渲染的时候,函数总会重新调用执行。

可以说computed性能会更好,但若不希望缓存,可以使用methods属性

4、样式绑定

在vue中由于class与style是HTML元素的属性,用于设置元素的样式,可以用v-bind来设置样式属性

实例1:

<div v-bind:class="{active:isActive}"></div>

等价于

<div class="active">

(1)vue.js.style(内联样式)

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script type="text/javascript" src="js/vue.min.js" ></script>
 </head>
 <body>
 <div id="app">
  <div v-bind:style="{color:activeColor,fontSize:fontSize + 'px'}">菜鸟教程</div>
 </div>
 
 <script>
  new Vue({
  el:'#app',
  data:{
   activeColor:'green',
   fontSize:30
  }
  })
 </script>
 </body>
</html>

(2)使用数组将多个样式对象应用到一个元素上

<div v-bind:style="[baseStyles,overridingStyles]">菜鸟教程</div>
    <script>
       new Vue({
 el:'#app',
        data:{
  baseStyles:{ 
  color:'green',
  fontSize:'30px'
  },
  overridingStyles:{
  'font-weight':'blod'
  }
 }
       })
    </script>

以上这篇Vue条件循环判断+计算属性+绑定样式v-bind的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
微信小程序前端源码逻辑和工作流
Sep 25 Javascript
Javascript动画效果(2)
Oct 11 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
js使用swiper实现层叠轮播效果实例代码
Dec 12 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
微信小程序实现购物车代码实例详解
Aug 29 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 Javascript
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 #Javascript
记React connect的几种写法(小结)
Sep 18 #Javascript
Vue循环组件加validate多表单验证的实例
Sep 18 #Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 #Javascript
JavaScript指定断点操作实例教程
Sep 18 #Javascript
对VUE中的对象添加属性
Sep 18 #Javascript
微信小程序适配iphoneX的实现方法
Sep 18 #Javascript
You might like
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php中{}大括号是什么意思
2013/12/01 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
js 获取input点选按钮的值的方法
2014/04/14 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
移动web开发之touch事件实例详解
2018/01/17 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
js实现聊天对话框
2020/02/08 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
python lxml中etree的简单应用
2019/05/10 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
Linux常见面试题
2013/03/18 面试题
中文系师范生自荐信
2013/10/01 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
怎样写辞职信
2015/02/27 职场文书
给下属加薪申请报告
2015/05/15 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers