1. 概述

老话说的好:干一行,爱一行,踏实工作才是真正快乐的源泉。

言归正传,今天继续聊 VUE3 的话题,今天聊聊 template 语法。

闲话不多说,直接上代码。

2. template 语法

2.1 与数据绑定

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7.  
  8. const app = Vue.createApp({ // 创建一个vue应用实例
  9. data() {
  10. return {
  11. message : "hello"
  12. }
  13. },
  14.  
  15. template : "<div>{{message}}</div>" // 插值表达式
  16.  
  17. });
  18.  
  19. // vm 就是vue应用的根组件
  20. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

template 中使用 {{message}} ,则 VUE 会使用 data 中的 message 的值去替换 template 中 {{message}} 的值。

但如果 data 中的 message 含有标签,则会直接显示出来,而不是当标签来用。

2.2 数据中含有标签

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7.  
  8. const app = Vue.createApp({ // 创建一个vue应用实例
  9. data() {
  10. return {
          message : "<h3>hello</h3>"
  1. }
  2. },
  3.  
  4. template : '<div v-html="message"></div>'
  5. });
  6.  
  7. // vm 就是vue应用的根组件
  8. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

template 中使用 v-html="message" 的写法,就可以将 data 中 message 中的标签识别出来

2.3 数据与 title 属性绑定

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7.  
  8. const app = Vue.createApp({ // 创建一个vue应用实例
  9. data() {
  10. return {
  11.           message : "hello",
           title : "myTitle"
  1. }
  2. },
      template : '<div v-bind:title="title">{{message}}</div>'
  1. });
  2.  
  3. // vm 就是vue应用的根组件
  4. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

使用 v-bind:title="title"  将 data 中的 title 变量 与 template 中的 title 属性绑定

2.4 数据控制 input 元素是否禁止编辑

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7.  
  8. const app = Vue.createApp({ // 创建一个vue应用实例
  9. data() {
  10. return {
  11.           myDisabled : true
  12. }
  13. },
  14.      template : '<input v-bind:disabled = "myDisabled">'
  15. });
  16.  
  17. // vm 就是vue应用的根组件
  18. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

v-bind:disabled = "myDisabled",数据绑定 disabled 属性

2.5 只取第一次的数据

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           message : "hello"
  11. }
  12. },
  13.      template : "<div v-once>{{message}}</div>"
  14. });
  15.  
  16. // vm 就是vue应用的根组件
  17. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素
  18. vm.$data.message = "hello world";

使用 v-once 修饰后,message 只取 data 中 message 的第一次赋值,这里显示 hello,而不是 hello world

2.6 数据控制元素是否显示

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           message : "hello",
  11. show : true
  12. }
  13. },
  14.      template : '<div v-if="show">{{message}}</div>'
  15. });
  16.  
  17. // vm 就是vue应用的根组件
  18. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

使用 v-if="show",绑定 data 中的 show 变量,true 显示,false 不显示。

2.7 为元素添加事件

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           message : "hello"
  11.  
  12. }
  13. },
  14.      methods: {
  15. myClick() {
  16. alert('点击我了')
  17. }
  18.  
  19. },
  20.      template : '<div v-on:click="myClick">{{message}}</div>'
  21. });
  22.  
  23. // vm 就是vue应用的根组件
  24. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

使用 v-on:click="myClick",将 methods 中的 myClick 方法绑定为点击事件。

2.8 为元素添加事件简便写法

template : '<div @click="myClick">{{message}}</div>'

将 v-on:click 改为 @click

2.9 数据与title属性绑定简便写法

template : '<div :title="title">{{message}}</div>'

将 v-bind:title 改为 :title 即可

2.10 动态属性

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           message : "hello",
  11.           attribute: "title",
  12.           title : "myTitle"
  13.  
  14. }
  15. },
  16.      
  17.      template : '<div :[attribute]="title">{{message}}</div>'
  18. });
  19.  
  20. // vm 就是vue应用的根组件
  21. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

:[attribute]="title",属性也与数据关联

2.11 动态事件

  1. <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           message : "hello",
  11. event: "click"
  12.  
  13. }
  14. },
  15.      methods: {
  16. myClick() {
  17. alert('点击我了')
  18. }
  19. },
  20.      template : '<div @[event]="myClick">{{message}}</div>'
  21. });
  22.  
  23. // vm 就是vue应用的根组件
  24. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

@[event]="myClick",具体绑定哪个事件,由 data 中的 event 数据决定

2.12 阻止form表单submit

  1.   <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.           
  11.  
  12. }
  13. },
  14.      methods: {
  15. submitClick(e) {
  16. e.preventDefault();
  17. alert('点击我了')
  18. }
  19. },
  20.      template : `
  21. <form action="https://www.zhuifengren.cn" @click="submitClick">
  22. <button type="submit">提交</button>
  23. </form>
  24. `
  25. });
  26.  
  27. // vm 就是vue应用的根组件
  28. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

在方法中使用 e.preventDefault(); 代码阻止 submit 提交。

2.13 阻止form表单submit 的另一种方式

  1.   <script src="../vue.global.js"></script>
  2. </head>
  3. <body>
  4. <div id="myDiv"></div>
  5. </body>
  6. <script>
  7. const app = Vue.createApp({ // 创建一个vue应用实例
  8. data() {
  9. return {
  10.  
  11. }
  12. },
  13.      methods: {
  14. myClick() {
  15. alert('点击我了')
  16. }
  17. },
  18.      template : `
  19. <form action="https://www.zhuifengren.cn" @click.prevent="myClick">
  20. <button type="submit">提交</button>
  21. </form>
  22. `
  23. });
  24.  
  25. // vm 就是vue应用的根组件
  26. const vm = app.mount('#myDiv'); // 绑定id为 myDiv 的元素

@click.prevent 也可阻止submit

3. 综述

今天聊了一下 VUE3 的 template 语法,希望可以对大家的工作有所帮助

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

4. 个人公众号

追风人聊Java,欢迎大家关注

VUE3 之 template 语法的更多相关文章

  1. Vue3中setup语法糖学习

    目录 1,前言 2,基本语法 2,响应式 3,组件使用 3.1,动态组件 3.2,递归组件 4,自定义指令 5,props 5.1,TypeScript支持 6,emit 6.1,TypeScript ...

  2. C++(VS2015)模板显式特化之template语法深入理解

    首先说下遇到的情况: 这里在vc++6.0上建立了一个自定义模板类,再去覆盖这个类,分别使用部分覆盖,整体覆盖 但在vs2015上去整体覆盖类会报错. 错误如下: 错误原因:个人感觉是新版本的vs更接 ...

  3. 基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结

    随着Vue3和TypeScript的大浪潮不断袭来,越来越多的Vue项目采用了TypeScript的语法来编写代码,而Vue3的JS中的Setup语法糖也越来越广泛的使用,给我们这些以前用弱类型的JS ...

  4. Django Template语法中 OneToOne、ForeignKey 外键查询

    主表的Models的结构 class A(models.Model): username = models.CharField(max_length=32, verbose_name='用户名称') ...

  5. Vue3 Composition API写烦了,试试新语法糖吧—setup script

    前言 Vue3发布近一年了,相信大家对Vue3的新特性,新语法都很熟悉了.那么在使用Composition API的过程中,有没有觉得整个过程比较繁琐.比如你的模板里用到了大量的state和方法的时候 ...

  6. vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽

    刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...

  7. 通过10个实例小练习,快速熟练 Vue3.0 核心新特性

    Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了. GitHub 博客地址: https://github.com/biaochenxuying ...

  8. vue3 script setup 定稿

    vue script setup 已经官宣定稿.本文主要翻译了来自 0040-script-setup 的内容. 摘要 在单文件组件(SFC)中引入一个新的 <script> 类型 set ...

  9. Vue3 中有哪些值得深究的知识点?

    众所周知,前端技术一直更新很快,这不 vue3 也问世这么久了,今天就来给大家分享下vue3中值得注意的知识点.喜欢的话建议收藏,点个关注! 1.createApp vue2 和 vue3 在创建实例 ...

随机推荐

  1. selet 语句详解

    SELECT 语句的基本格式为:        SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;        2.0 数学符号条件            SELECT 语句常常会 ...

  2. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项

    前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...

  3. [uoj173]鏖战表达式

    2018年论文题,上接loj2506,主要是论文中的第4章,也可快速跳至原题解 5.平衡树的嵌套问题 平衡树嵌套 所谓平衡树嵌套,就是若干棵平衡树,其中若干棵平衡树的根会指向另一颗平衡树上的一个节点 ...

  4. es插件安装

    首先安装找到一样版本的地址: Release v7.6.1 · medcl/elasticsearch-analysis-ik (github.com) 下载最上面的编译版 将文件解压到plugins ...

  5. CF1477A Nezzar and Board

    考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...

  6. CF1444C Team-Building

    考虑我们判定二分图染色的经典算法: 染色. 我们把所有不同颜色块之间的边都保存下来. 只在图中保留相同颜块之间的边,并对其染色. 我们考虑记\(g_i\)为一个点的所在联通块编号,\(f_i\)为他在 ...

  7. Codeforces 356E - Xenia and String Problem(哈希)

    Codeforces 题面传送门 & 洛谷题面传送门 首先显然一个 gray 串的长度只可能是 \(2^k-1\),其中 \(k\in\mathbb{Z}\). 考虑将一个字符改成另外一个字符 ...

  8. SP20173 DIVCNT2 - Counting Divisors (square)

    Refer 主要思路参考了 Command_block 的题解. Description 给定 \(n\)(\(n\le 10^{10}\)),求 \[\sum_{i=1}^n\sigma_0(i^2 ...

  9. IDEA 配置背景颜色(豆沙绿)

    1. 定义方案名字(my color) Ctrl + Shift + a --> Color Scheme // 快捷定位配置 // 路径:File --> Settings --> ...

  10. RNA-seq 生物学重复相关性验证

    根据拿到的表达矩阵设为exprSet 1.用scale 进行标准化 数据中心化:数据集中的各个数字减去数据集的均值 数据标准化:中心化之后的数据在除以数据集的标准差. 在R中利用scale方法来对数据 ...