“Vue进阶:深入理解插值、指令、过滤器、计算属性和监听器“

news2024/9/29 8:39:49

目录

  • 引言:
    • Vue的插值
    • Vue的指令
    • Vue的过滤器
    • Vue的计算属性和监听器
    • vue购物车案例
    • 总结:

引言:

Vue.js是一款流行的JavaScript框架,它提供了许多强大的功能来简化前端开发。在本篇博客中,我们将深入探讨Vue的一些高级特性,包括插值、指令、过滤器、计算属性和监听器。通过理解和灵活运用这些功能,我们可以更好地构建出丰富、高效的Vue应用程序。

Vue的插值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title></title>
		<style>
			.font-30{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<div id = "app">
			{{msg}}<br /><hr />
			html,class绑定-------<b :class="msg3" v-html="msg2"></b><br /><hr />
			表达式----<br />
			{{num+1}}<br />
			{{str.substring(2,4)}}<br />
			<input v-model="ok" />
			{{ok==true?'yes':'no'}}<br /><hr />
		</div>
		<script>
			new Vue({
				el:"#app",
				data(){
					return{
						msg:'hello vue',
						msg2:'<span style="color:red">msg2样式</span>',
						msg3:'font-30',
						num:6,
						str:'沉谭秋叶',
						ok:true
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述

Vue的指令

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title></title>
		<style>
			.font-30{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<div id = "app">
			<input v-model="score" />
			<b v-if="score < 60">不合格</b>
			<b v-else-if="score >= 60 && score < 70">及格</b>
			<b v-else-if="score >= 70 && score < 80">一般</b>
			<b v-else-if="score >= 80 && score < 90">良好</b>
			<b v-else>优秀</b>
			<br /><hr />
			v-show
			<b v-show="isShow">xxx</b>
			<br /><hr />
			v-for
			<b v-for="i in arr">{{i}}-</b>
			<b v-for="i in arrs">{{i.name}}-{{i}}=</b>	<br /><hr />
			<select>
				<option>请选择</option>
				<option v-for="i in arrs" :value="i.id">{{i.name}}</option>
			</select>
			<br /><hr />
			<div v-for="i in arrs"> 
				<input type="checkbox" name="hobby" :value="i.id" />{{i.name}}
			</div>
			<br /><hr />
			<input v-model="evename"/>
			<button v-on:[evename]="text">点击</button>
		</div>
		<script>
			new Vue({
				el:"#app",
				data(){
					return{
						score:69,
						isShow:false,
						arr:['a','b','c','d'],
						arrs:[{name:'小王',id:1},{name:'小李',id:2},{name:'小桂',id:3},{name:'小勇',id:4}],
						evename:'click'
					}
				},methods:{
					text(){
						alert('点击了!!')
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述

Vue的过滤器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="jquery.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<script src="date.js"></script>
		<title></title>
	</head>
	<body>
		<div id = "app">
			{{msg}}<br>
			
			{{msg | filter1}} <br>
			{{msg | filter1 | filter2}}<br>
			{{msg | filter3(3,7)}}<br>
			<hr>
			{{time}}<br>
			{{time | filterName}}
		</div>
		<script>
			Vue.filter('filterName', function (value) {
			 // value 表示要过滤的内容
			 return fmtDate(value);
			});

			new Vue({
				el:"#app",
				filters:{
					'filter1':function(v){
						return v.substring(0,5)
					},
					'filter2':function(v){
						return v.substring(1,3)
					},
					'filter3':function(v,begin,end){
						return v.substring(begin,end)
					}
				},
				data(){
					return{
						msg:'允许你自定义过滤器,被用作一些常见的文本格式化,格式如下',
						time:new Date()
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述

Vue的计算属性和监听器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title></title>
		<style>
			.font-30{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<div id = "app">
			{{msg}}<br /><hr />
			单价<input v-model="price"/>
			数量<input v-model="num"/>
			小计{{count}}
			<br />
			千米<input v-model="km"/><br /><input v-model="m"/>
		</div>
		<script>
			new Vue({
				el:"#app",
				data(){
					return{
						msg:'hello vue',
						price:88,
						num:1,
						m:1000,
						km:1
					}
				},computed:{
					count:function(){
						return this.price*this.num
					}
				},watch:{
					km:function(v){
						 this.m = parseInt(v)*1000;
					},
					m:function(v){
						 this.km = parseInt(v)/1000;
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述
data.js

//给Date类添加了一个新的实例方法format
Date.prototype.format = function (fmt) {
	//debugger;
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

function fmtDate(date, pattern) {
	var ts = date.getTime();
    var d = new Date(ts).format("yyyy-MM-dd hh:mm:ss");
    if (pattern) {
        d = new Date(ts).format(pattern);
    }
    return d.toLocaleString();
};

vue购物车案例

<!DOCTYPE html>
<html>
<head>
  <title>购物车</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }

    th, td {
      border: 1px solid black;
      padding: 8px;
      text-align: left;
    }

    th {
      background-color: #f2f2f2;
    }

    .btn-group {
      display: flex;
      justify-content: space-between;
    }
  </style>
</head>
<body>
  <div id="app">
    <h1>购物车</h1>
    <table>
      <thead>
        <tr>
          <th>商品</th>
          <th>价格</th>
          <th>数量</th>
          <th>小计</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="v in arr" >
          <td>{{ v.name }}</td>
          <td>{{ v.price }}</td>
          <td>
            <input type="number" v-model="v.quantity" @input="xj(v)">
          </td>
          <td>{{ v | filter1 }}</td>
          <td class="btn-group">
            <button @click="add(v)">+</button>
            <button @click="jdd(v)">-</button>
          </td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan="3">总计</td>
          <td>{{ total }}</td>
        </tr>
      </tfoot>
    </table>
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        arr: [
          { name: '尿不湿', price: 49, quantity: 1, subtotal: 49 },
          { name: '狼牙棒', price: 28, quantity: 1, subtotal: 28 },
          { name: '鸡毛卷', price: 36, quantity: 1, subtotal: 36 }
        ]
      },
      computed: {
        total: function() {
          return this.arr.reduce((sum, v) => sum + v.subtotal, 0);
        }
      },
      methods: {
        xj: function(v) {
          v.subtotal = v.price * v.quantity;
        },
        add: function(v) {
          v.quantity++;
          this.xj(v);
        },
        jdd: function(v) {
          if (v.quantity > 0) {
            v.quantity--;
            this.xj(v);
          }
        }
      },
      filters: {
        'filter1': function(v) {
          return v.price * v.quantity;
        }
      }
    });
  </script>
</body>
</html>

在这里插入图片描述

总结:

通过本篇博客的学习,我们深入理解了Vue的插值、指令、过滤器、计算属性和监听器这些高级特性。这些功能不仅可以帮助我们更好地处理数据绑定和DOM操作,还能提升应用程序的性能和开发效率。在实际项目中,我们应根据具体需求合理运用这些功能,以构建出饱满、高效的Vue应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机基础知识】计算机的概念

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言1.计算机的概念计算机的发展历程知识拓展&#xff1a; 计算机的特点计算机的分类 2.计算机的应用计算机的发展趋势知识拓展: 总结 前言 美…

双翌保养码使用指南方法三

保养码使用指南方法三&#xff1a;WiseAlign版本 为了保障您能够顺利使用软件&#xff0c;使之正常运行和合规使用&#xff0c;如何正确使用保养码显得尤为重要。以下是针对 WiseAlign软件的保养码使用指南&#xff0c;帮助您顺利进行激活操作。 步骤一&#xff1a;打开软件并…

uniapp:不同权限设置不同的tabBar

1、在pages.json里&#xff0c;将所有tabBar涉及的页面都加进来。 我这里使用username来动态显示tabBar。 jeecg用户显示&#xff1a;首页&#xff0c;订单&#xff0c;消息&#xff0c;发现&#xff0c;我的&#xff0c;一共5个tabBar。 admin用户显示&#xff1a;首页&…

喜报:项目验收季之陕西融通军民服务社会议室大屏系统项目建设顺利通过竣工验收

由达之云承建的陕西融通军民服务社会议室大屏系统项目建设日前完满完成各项建设任务&#xff0c;建设成果达到预期项目建设目标&#xff0c;并于9月19日顺利通过项目竣工验收。 陕西融通军民服务社有限公司会议大屏系统建设项目为大会议室增加一套视频会议系统&#xff0c;将原…

同为科技(TOWE)工业用插头插座及配电箱产品选型推荐

工业用插头插座及配电箱产品是专用于工业环境中的电源连接和电气设备控制&#xff0c;与普通家用插头插座相比&#xff0c;通常具有更高的功率和电流容量&#xff0c;并且设计上考虑了耐用性、安全性和适应各种环境条件的能力。工业用插头插座产品类型多样&#xff0c;包括插头…

【数仓建设系列之六】数仓管理利器-数据中台

【数仓建设系列之六】数仓管理利器-数据中台介绍 相信看过前面几篇数仓建设系列文章的同学已经对什么是数仓以及如何建设数仓有了充分的认知和了解了&#xff0c;那么问题很多的小明就要问了&#xff0c;既然数仓已经建设起来了&#xff0c;那企业如何管理运营数仓呢&#xff1…

WorkPlus打造智慧企业移动门户,开启高效办公新时代

在移动互联网时代&#xff0c;企业对于高效办公和便捷访问的需求不断增长。WorkPlus作为领先的品牌&#xff0c;致力于打造智慧企业移动门户&#xff0c;帮助企业实现高效协作与便捷访问。本文将重点介绍WorkPlus如何通过创新解决方案&#xff0c;为企业提供定制化的智慧移动门…

Python画图系列——折线图

好看的折线图 import numpy as np import matplotlib.pyplot as plt# 生成随机数据 # np.random.seed(42) # 设置随机种子以确保可重复性 sample_numbers np.arange(1, 21) # 生成1到20的样本编号random_data np.random.rand(20) # 生成20个随机数&#xff0c;范围在0到1之…

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

文字处理工具 word 2019 mac中文版改进功能

Microsoft Word 2019 是微软公司的文字处理软件&#xff0c;是 office 2019 套件中的一部分。它是一个功能强大、易于使用的工具&#xff0c;可以帮助用户创建各种类型的文档&#xff0c;包括信函、简历、报告、手册等。 Word 2019 提供了许多功能和改进&#xff0c;包括更好的…

Day 02 python学习笔记

python运算符 算术运算符 混合运算的优先级&#xff1a; () > ** * / // % 高于 - 赋值运算符 - * / ** a 1 > a 3 > a a 3 其余同理 注意&#xff1a; python没有自增自减 &#xff08;a a a-- --a&#xff0…

华为技术有限公司副总裁、计算产品线总裁张熙伟一行到访湖南欧拉生态创新中心座谈交流

9月16日下午&#xff0c;华为技术有限公司&#xff08;简称&#xff1a;华为&#xff09;副总裁、计算产品线总裁张熙伟一行到访湖南欧拉创新中心开展座谈交流。麒麟信安董事长杨涛&#xff0c;麒麟信安高级副总裁刘坤、陈松政&#xff0c;副总裁王攀、颜跃进等参加交流。 华为…

【HTTP】Cookie 和 Session 详解

Cookie 和 Session 一. Cookie1. 什么是 Cookie2. Cookie 的作用3. Cookie 的组成4. Cookie 的组织形式5. Cookie 的传输6. 如何提高 Cookie 的安全性7. Cookie 类 二. Session1. 理解会话机制 (Session)2. Sessoin 的组织形式3. HttpSession 类 三. Cookie 和 Session 的联系与…

ATF编译报错,更新工具链后解决

同一个问题被两个人问到&#xff0c;都是ATF源码编译不过&#xff0c;更新工具链后解决 unknown value armv8.5-a’ for -march cc1: error: unknown value cortex-a55’ for -tune 如果您在编译的时候&#xff0c;也遇到架构或微架构的错误&#xff0c;可尝试更新工具链。 分…

家长监控孩子电脑屏幕的软件有哪些?怎么监控家中孩子的电脑?

在当今信息化社会&#xff0c;互联网已经成为孩子们学习、娱乐和社交的重要平台。然而&#xff0c;网络环境中充斥着各种不良信息和安全隐患&#xff0c;对孩子的身心健康造成了一定的影响。为了保障孩子的网络安全和健康成长&#xff0c;家长们需要采取一定的措施来监控孩子的…

01-初识HTML

01-初识HTML 学习目标&#xff1a; 理解HTML的基本语法掌握排版标签实现标题等效果相对路径和绝对路径媒体标签&#xff08;图片、音频、视频&#xff09;超链接 一、基础认知 了解网页组成和五大浏览器 明确Web标准的构成 1.1 认识网页 以下网页有哪些部分组成 文字、图片、…

一致性检验-简单Kappa

目录 ChatGPT的回答&#xff1a; Kappa的计算 Kappa值的解释 网上给出的资料&#xff1a; 关于Kappa的第一篇论文&#xff1a; Jacob Cohen (1960). "A coefficient of agreement for nominal scales". Educational and Psychological Measurement. 20 (1): 37–…

word 导出 excel导出

Word 文档导出&#xff0c;指定word模板 excel导出

Springboot 实践(20)负载均衡器Ribbon

Ribbon是Netflix发布的负载均衡器&#xff0c;协助控制HTTP和TCP客户端的行为&#xff1b;为Ribbon配置服务提供者地址后&#xff0c;Ribbon就可基于负载均衡算法自动地帮助服务消费者去请求。Ribbon默认提供了很多负载均衡算法&#xff0c;例如&#xff1a;轮询、随机等&#…

ETLCloud助力富勒TMS实现物流数仓同步

富勒TMS提供了多种运输管理业务的解决方案&#xff0c;极大的方便了企业对物流的管理和人力输出&#xff0c;同时提供了大量的API接口&#xff0c;供用户做数据集成和数仓同步。 通过富勒TMS中心&#xff0c;第三方开发者和商家可实现以下功能&#xff1a; MS系统数据同步&…