前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue之插值表达式

vue之插值表达式

作者头像
一个风轻云淡
发布于 2022-11-15 08:56:41
发布于 2022-11-15 08:56:41
1.9K00
代码可运行
举报
文章被收录于专栏:java学习javajava学习java
运行总次数:0
代码可运行

  1、插值表达式

1)、花括号

格式:{{表达式}}

说明:  该表达式支持 JS 语法,可以调用 js 内置函数(必须有返回值)  表达式必须有返回结果。例如 1 + 1,没有结果的表达式不允许使用,如:let a = 1 + 1;  可以直接获取 Vue 实例中定义的数据或函数

2)、插值闪烁

使用{{}}方式在网速较慢时会出现问题。在数据未加载完成时,页面会显示出原始的`{{}}`, 加载完毕后才显示正确数据,我们称为插值闪烁。 我们将网速调慢一些,然后刷新页面,试试看刚才的案例: 

3)、v-text 和 v-html  

可以使用 v-text 和 v-html 指令来替代{{}}

说明:

 v-text:将数据输出到元素内部,如果输出的数据有 HTML 代码,会作为普通文本输出

 v-html:将数据输出到元素内部,如果输出的数据有 HTML 代码,会被渲染

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">

v-text:<span v-text="hello"></span> <br />

v-html:<span v-html="hello"></span>
</div><script src="./node_modules/vue/dist/vue.js"></script>
<script>

let vm = new Vue({

el: "#app",

data: {

hello: "<h1>大家好</h1>"

}
})

</script>

并且不会出现插值闪烁,当没有数据时,会显示空白或者默认数据 

2、v-bind

html 属性不能使用双大括号形式绑定,我们使用 v-bind 指令给 HTML 标签属性绑定值; 而且在将 `v-bind` 用于 `class` 和 `style` 时,Vue.js 做了专门的增强。

1)、绑定 class

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">
</div>
<script>

let vm = new Vue({

el: "#app",

data: {

isActive: true,

hasError: false

}
})

</script>

2)、绑定 style 

`v-bind:style` 的对象语法十分直观,看着非常像 CSS,但其实是一个 JavaScript 对象。style 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,这种方式记得用单引号括起 来) 来命名。 例如:font-size-->fontSize

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app" v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
<script>

let vm = new Vue({

el: "#app",

data: {

activeColor: 'red',

fontSize: 30

}
})

</script>

3)、绑定其他任意属性 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app" v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"

v-bind:user="userName">
</div>
<script>

let vm = new Vue({

el: "#app",

data: {

activeColor: 'red',

fontSize: 30,

userName: 'zhangsan'

}
})

</script>

4)、v-bind 缩写  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app" :style="{ color: activeColor, fontSize: fontSize +'px' }":user="userName">
</div>

3、v-model  

刚才的 v-text、v-html、v-bind 可以看做是单向绑定,数据影响了视图渲染,但是反过来就不 行。接下来学习的 v-model 是双向绑定,视图(View)和模型(Model)之间会互相影响。 既然是双向绑定,一定是在视图中可以修改数据,这样就限定了视图的元素类型。目前

v-model 的可使用元素有:

- input

- select

- textarea

- checkbox

- radio

- components(Vue 中的自定义组件)

基本上除了最后一项,其它都是表单的输入项。 示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<input type="checkbox" v-model="language" value="Java" />Java<br />
<input type="checkbox" v-model="language" value="PHP" />PHP<br />
<input type="checkbox" v-model="language" value="Swift" />Swift<br />
<h1>

你选择了:{{language.join(',')}}

</h1>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let vm = new Vue({

el: "#app",

data: {

language: []
}
})

</script>

 多个`CheckBox`对应一个 model 时,model 的类型是一个数组,单个 checkbox 值默认是 boolean 类型  radio 对应的值是 input 的 value 值  `text` 和`textarea` 默认对应的 model 是字符串  `select`单选对应字符串,多选对应也是数组

4、v-on 

1、基本用法

v-on 指令用于给页面元素绑定事件。 语法: v-on:事件名="js 片段或函数名"

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">

<!--事件中直接写 js 片段-->

<button v-on:click="num++">点赞</button>

<!--事件指定一个回调函数,必须是 Vue 实例中定义的函数-->

<button v-on:click="decrement">取消</button>
<h1>{{num}}个赞</h1>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let vm = new Vue({

el: "#app",

data: {

num: 100

},

methods: {
decrement() {

this.num--; //要使用 data 中的属性,必须 this.属性名

}
}
})

</script>

另外,事件绑定可以简写,例如`v-on:click='add'`可以简写为`@click='add'`

2、事件修饰符

在事件处理程序中调用 `event.preventDefault()` 或 `event.stopPropagation()` 是非常常见的 需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑, 而不是去处理 DOM 事件细节。 为了解决这个问题,Vue.js 为 `v-on` 提供了事件修饰符。修饰符是由点开头的指令后缀来 表示的。

 `.stop` :阻止事件冒泡到父元素

 `.prevent`:阻止默认事件发生

 `.capture`:使用事件捕获模式

 `.self`:只有元素自身触发事件才执行。(冒泡或捕获的都不执行)

 `.once`:只执行一次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">

<!--右击事件,并阻止默认事件发生-->

<button v-on:contextmenu.prevent="num++">点赞</button>
<br />

<!--右击事件,不阻止默认事件发生-->

<button v-on:contextmenu="decrement($event)">取消</button>
<br />
<h1>{{num}}个赞</h1>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

num: 100

},

methods: {

decrement(ev) {

// ev.preventDefault();

this.num--;}
}
})

</script>

效果:右键“点赞”,不会触发默认的浏览器右击事件;右键“取消”,会触发默认的浏览 器右击事件) 

3、按键修饰符

在监听键盘事件时,我们经常需要检查常见的键值。Vue 允许为 `v-on` 在监听键盘事件时添 加按键修饰符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <!-- 只有在 `keyCode`13 时调用 `vm.submit()` -->
 
<input v-on:keyup.13="submit">
 
 
<input v-on:keyup.13="submit">
 
记住所有的 `keyCode` 比较困难,所以 Vue 为最常用的按键提供了别名:
 
<input v-on:keyup.enter="submit">
 
<input @keyup.enter="submit">
 

全部的按键别名:  `.enter`  `.tab`  `.delete` (捕获“删除”和“退格”键)  `.esc`  `.space`  `.up`  `.down`  `.left`  `.right

4、组合按钮

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。

 `.ctrl`

 `.alt`

 `.shift`

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- Alt + C -->

<input @keyup.alt.67="clear">

<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>

5、v-for

遍历数据渲染页面是非常常用的需求,Vue 中通过 v-for 指令来实现。

1、遍历数组

语法:v-for="item in items"

 items:要遍历的数组,需要在 vue 的 data 中定义好。

 item:迭代得到的当前正在遍历的元素 示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<ul>
<li v-for="user in users">

{{user.name}} - {{user.gender}} - {{user.age}}

</li>
</ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

users: [
{ name: '柳岩', gender: '女', age: 21 },
{ name: '张三', gender: '男', age: 18 },
{ name: '范冰冰', gender: '女', age: 24 },
{ name: '刘亦菲', gender: '女', age: 18 },
{ name: '古力娜扎', gender: '女', age: 25 }
]
},
})

</script>

2、数组角标

在遍历的过程中,如果我们需要知道数组角标,可以指定第二个参数: 语法:v-for="(item,index) in items"

 items:要迭代的数组

 item:迭代得到的数组元素别名

 index:迭代到的当前元素索引,从 0 开始。 示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<ul>
<li v-for="(user, index) in users">

{{index + 1}}. {{user.name}} - {{user.gender}} - {{user.age}}

</li>
</ul>
</div>

3、遍历对象

v-for 除了可以迭代数组,也可以迭代对象。语法基本类似 语法:

v-for="value in object" v-for="(value,key) in object" v-for="(value,key,index) in object"

 1 个参数时,得到的是对象的属性值

 2 个参数时,第一个是属性值,第二个是属性名

 3 个参数时,第三个是索引,从 0 开始

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<ul>
<li v-for="(value, key, index) in user">

{{index + 1}}. {{key}} - {{value}}

</li>
</ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let vm = new Vue({

el: "#app",

data: {

user: { name: '张三', gender: '男', age: 18 }
}
})

</script>

4、Key

用来标识每一个元素的唯一特征,这样 Vue 可以使用“就地复用”策略有效的提高渲染的 效率。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
<li v-for="(item,index) in items" :key=”index”></li>
</ul>
<ul>
<li v-for="item in items" :key=”item.id”></li>
</ul>

如果 items 是数组,可以使用 index 作为每个元素的唯一标识 如果 items 是对象数组,可以使用 item.id 作为每个元素的唯一标识 

6、v-if 和 v-show

1、基本用法

v-if,顾名思义,条件判断。当得到结果为 true 时,所在的元素才会被渲染。

v-show,当得到结果为 true 时,所在的元素才会被显示。 语法:v-if="布尔表达式", v-show="布尔表达式",

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<button v-on:click="show = !show">点我呀</button>
<br>
<h1 v-if="show">

看到我啦?!

</h1>
<h1 v-show="show">

看到我啦?!show

</h1>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

show: true

}
})

</script>

 2、与 v-for 结合

当 v-if 和 v-for 出现在一起时,v-for 优先级更高。也就是说,会先遍历,再判断条件。 修改 v-for 中的案例,添加 v-if:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
<li v-for="(user, index) in users" v-if="user.gender == '女'">
{{index + 1}}. {{user.name}} - {{user.gender}} - {{user.age}}

</li>
</ul>

7、v-else 和 v-else-if

v-else 元素必须紧跟在带 `v-if` 或者 `v-else-if` 的元素的后面,否则它将不会被识别。 示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<button v-on:click="random=Math.random()">点我呀

</button><span>{{random}}</span>
<h1 v-if="random >= 0.75">

看到我啦?!v-if >= 0.75

</h1>
<h1 v-else-if="random > 0.5">

看到我啦?!v-else-if > 0.5

</h1>
<h1 v-else-if="random > 0.25">

看到我啦?!v-else-if > 0.25

</h1>
<h1 v-else>

看到我啦?!v-else

</h1>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

random: 1

}
})

</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
在 PyQt5 中,菜单栏(QMenuBar)、工具栏(QToolBar)和状态栏(QStatusBar)是 QMainWindow 提供的标准控件,用于帮助用户更好地与应用程序交互。它们是桌面应用程序的常见组成部分:
半截诗
2024/10/09
2.2K0
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(序篇) 【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
半截诗
2024/10/09
1.3K0
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
Qt入门系列(二)
选中mainWindow.cpp右键->在Explor中显示->粘贴进来(显示包含的目录)
用户9831583
2022/06/16
2K0
Qt入门系列(二)
PyQt5案例汇总(完整版)
PyQt5是一套绑定Qt5的应用程序框架。他在Python 2.x和3.x中都是可用的。该教程使用的是Python3.x。
victorfengming
2021/11/26
5.2K0
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
PyQt5 是 Python 的图形用户界面 (GUI) 框架,它基于强大的 Qt 库。Qt 是一个跨平台的 C++ 框架,用于构建桌面应用程序。通过 PyQt5,我们可以用 Python 轻松构建跨平台的桌面应用程序,支持 Windows、macOS 和 Linux。
半截诗
2024/10/09
17.9K0
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
【QT】Qt 窗口 (QMainWindow)
QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中 各组件所处的位置:
YoungMLet
2024/07/16
4880
【QT】Qt 窗口 (QMainWindow)
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/10
1.9K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
在 PyQt4 中的菜单和工具栏¶
QtGui.QMainWindow 类提供了一个应用的主窗口。这使得我们可以创建典型的应用框架,包括状态栏,工具栏和菜单。
bear_fish
2018/09/20
6310
在 PyQt4 中的菜单和工具栏¶
http://www.cppblog.com/mirguest/archive/2012/02/05/164982.html
bear_fish
2018/09/20
6070
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/06/06
4.7K0
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
【QT】:QMainWindow 窗口
Qt 中的菜单栏是通过 QMenuBar 这个类来实现的。一个主窗口最多只有一个菜单栏,位于主窗口顶部、主窗口标题栏下面。
IsLand1314
2025/02/18
2140
【QT】:QMainWindow 窗口
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
在Python Qt GUI设计:窗口布局管理方法【基础篇】(基础篇—5)文章中,聊到了如何使用Qt Designer进行窗口布局管理,其实在Qt Designer中可以非常方便进行窗口布局管理设计,本篇博文在4种窗口布局方式基础上继续深入聊聊API函数~
不脱发的程序猿
2021/10/09
4.7K0
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
文章目录 1. 状态栏 2. 窗口居中显示 3. 关闭窗口 4. QWidget 5. 添加图标 6. 气泡提示信息 7. QLabel 添加快捷键 8. QLineEdit echoMode 验证器 inputMask 综合练习 9. QTextEdit learn from 《PyQt5 快速开发与实战》 1. 状态栏 self.statusbar.showMessage("hello, Michael", 2000),第二个参数是显示多长时间ms,默认无限长时间 # -*- coding: utf-8
Michael阿明
2022/05/10
2.6K0
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5510
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
【Qt】:Dialog 对话框
模态对话框 指的是:显示后无法与父窗口进行交互,是⼀种阻塞式的对话框。使用 QDialog:: exec () 函数调用。
IsLand1314
2025/02/28
1620
【Qt】:Dialog 对话框
PyQt5 入门
我的路径是:D:\ProgramData\Anaconda3\envs\cv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Michael阿明
2022/05/10
1.5K0
PyQt5 入门
PYQT中的菜单和工具栏
在这部分的PyQt5教程中,我们将创建菜单和工具栏。菜单式位于菜单栏的一组命令操作。工具栏是应用窗体中由按钮和一些常规命令操作组成的组件。
小飞侠xp
2018/12/24
2.7K0
PYQT中的菜单和工具栏
学习 QT 过程中的一些笔记
学习 QT 时候做的一些笔记 目录 目录 按钮常用控件 API QT 窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda 表达式 利用 Lambda 表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget 列表容器 按钮常用控件 API QPushButton * btn = new
HauHau
2022/01/12
1.2K0
QT Creator 快速入门教程 读书笔记(二)
一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的
用户1198337
2018/01/19
1.3K0
QT Creator 快速入门教程 读书笔记(二)
PyQt5-Qt Designer中控件的尺寸相关设置(sizePolicy策略)
虫无涯
2023/10/09
3K0
推荐阅读
相关推荐
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  •   1、插值表达式
    • 1)、花括号
    • 2)、插值闪烁
    • 3)、v-text 和 v-html  
  • 2、v-bind
    • 1)、绑定 class
    • 2)、绑定 style 
    • 3)、绑定其他任意属性 
    • 4)、v-bind 缩写  
  • 3、v-model  
    • 1、基本用法
    • 2、事件修饰符
    • 3、按键修饰符
    • 4、组合按钮
  • 5、v-for
    • 1、遍历数组
    • 2、数组角标
    • 3、遍历对象
    • 4、Key
  • 6、v-if 和 v-show
    • 1、基本用法
    •  2、与 v-for 结合
  • 7、v-else 和 v-else-if
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档