vue中的插值表达式

  • 前言: 在html页面上只能展示字符串,console.log()打印出的也是字符串,意味着都会调用toString()方法,但实际上控制台展示的既有数组又有对象等类型,那是由于浏览器会进行处理
  • 用法: 使用在vue实例对象对应的DOM元素的html的正反标签之间
    • 支持匿名变量
    • 支持三目运算符
    • 数值
      • 支持四则运算
      • 支持比较运算符
      • 支持数值类型的一些内置方法
    • 数组
      • 支持数组的索引取值方法
    • 对象:支持对象的属性
    • window内置对象的Math的属性和方法:如果data中也有一个Math,那么vue对象的数据仓库优先级最高
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 字符串 -->
        <p>{{ str }}</p> <!--页面展示:字符串-->
        <p>{{ num + ‘aaa‘}}</p><!--页面展示:1aaa-->
        <p>{{ str.length }}</p> <!--页面展示:3-->

        <!-- 数值 -->
        <p>{{ num }}</p> <!--页面展示:1-->
        <p>{{ num+num1 }}</p> <!--页面展示:101-->
        <p>{{ num > num1 }}</p>  <!--页面展示:false-->
        <p>{{ num.toFixed(2) }}</p> <!--页面展示:1.00-->

        <!-- boolean -->
        <p>{{ flag }}</p> <!--页面展示:true-->

        <!-- 数组 -->
        <p>{{ arr }}</p> <!--页面展示:[1,2,3,4]-->
        <p>{{ arr[3] }}</p> <!--页面展示:4-->

        <!-- 对象 -->
        <p>{{ obj }}</p> <!--页面展示:{ "name": "tom", "age": 20 }-->
        <p>{{ obj.name }}</p> <!--页面展示:tom-->

        <!-- null/undefined/NaN -->
        <p>{{ arg1 }}</p> <!--页面展示:-->
        <p>{{ arg2 }}</p> <!--页面展示:-->
        <p>{{ arg3 }}</p> <!--页面展示:NaN-->

        <!-- 三目运算符 -->
        <p>{{ num > num1 ? "是" : "否" }}</p> <!--页面展示:否-->

    </div>

    <script>
        new Vue({
            el:"#app",
            data:{
                str: ‘字符串‘,
                num: 1,
                num1:100,
                flag: true,
                arr: [1,2,3,4],
                obj:{
                    name:‘tom‘,
                    age:20
                },
                arg1: null,
                arg2: undefined,
                arg3: NaN
            }
        })
    </script>
</body>
</html>
  • 数据来源: 对应的vue实例对象的data仓库以及window内置对象的Math
  • 原理: 使用的是dom对象的innerText属性,所以不会做字符串解析
  • vue改写了js中的toString()方法
// undefined == null; 比较如果是同类型则直接对比,如果不是则转换成Boolean进行对比
// typeof数组 也是object
// 对象如果使用toString(),则转换成[object object]

function toString (val) {
  return val == null? ‘‘//如果是null,则转换成空字符串
    : typeof val === ‘object‘//如果是对象,使用JSON.stringify转换成字符串
      ? JSON.stringify(val, null, 2)
      : String(val)//如果是两者都不是,则强转成字符串
}

原文地址:https://www.cnblogs.com/wuliangfan/p/11161725.html

时间: 2024-10-09 19:17:47

vue中的插值表达式的相关文章

vue中的插值表达式的作用

+ 在vue中的作用范围中使用data + 支持js代码的运算 + 支持函数的调用 v-text 直接进行输出,会覆盖原有内容 v-html 会把数据解析成html代码执行 v-bind 对属性进行绑定 v-model 表单数据的双向绑定,也是vue v-if 控制标签元素  每次都会删除或者创建元素,有较高的切换性能消耗 v-show 控制标签元素 没有进行删除,添加了dispaly:none ,有较高的初始渲染开销 v-for 循环 v-on 绑定事件 按键修饰符 .enter .tab .

vue插值表达式、v-text、v-html、v-cloak、v-bind、v-on

一.解析 插值表达式:{{}} v-html:解析带标签语句 v-cloak:使用 v-cloak 能够解决 插值表达式闪烁的问题 v-text:默认 v-text 是没有闪烁问题的,v-text会覆盖元素中原本的内容,但是 插值表达式  只会替换自己的这个占位符,不会把 整个元素的内容清空 v-bind:Vue提供的属性绑定机制   缩写是 : v-on:Vue提供的事件绑定机制   缩写是 @ 二.实例 <body> <div id="app"> <!

插值表达式和Vue标签属性的用法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

在Vue 中调用数据出现属性不存在的问题

这已经是我在调用数据时趟过几次的坑了,索性记录下来防止后面再犯: 一般我们请求数据来渲染一个页面的时候,请求下来的数据基本上都是数组或是对象,再通过列表循环和插值表达式渲染的页面:在data 中提前声明接收数据的变量时若为指定类型,就直接将数据渲染到页面,在浏览器的控制台基本上都会出现 "某某属性未定义" 的英文报错:下面举个例子: 先假设请求的是下面的json 数据: { "code": 0, "data":[ { "name&quo

第二章 Vue快速入门--9 使用v-on指令定义Vue中的事件

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <title>Document</title> 8

vue中filters(过滤器)的使用

在vue中使用filters Vue.js自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的尾部,由"管道"符号指示: <!-- 在双花括号中 --> <!-- message作为capitalize的第一个参数 --> {{ message | capitalize }} <!-- 如果有多个参数,message作为第一个参数,其它参数写在capit

横冲直撞vue(第三篇):vue中template的三种写法、v-bind、v-on、更新元素的指令v-text与v-html、条件渲染指令v-if 与v-show、v-for

一.vue中template的三种写法 第一种(字符串模板写法): 直接写在vue构造器里,这种写法比较直观,适用于html代码不多的场景,但是如果模板里html代码太多,不便于维护,不建议这么写. <body> <div id="app"></div> <script src="./lib/vue.js"></script> <script type="text/javascript&qu

vue中如何实现数据的双向绑定

vue中如何实现数据的双向绑定 实现视图变化数据跟着变:分两步,上面get中的为第二步(即再次读取的时候会调用get方法得到之前设置的值,以此来实现动态改变) 由于直接写obj.name = this.value;会导致循环调用set方法,所以要借助中间对象的形式把值赋给中间对象,获取obj.name的时候我们获取中间对象的最新值即可 let obj = {name:'zhufeng',age:9};//数据 let temp = {name:"lily"};//借助中间对象 let

3-6 Vue中的条件渲染

本次案例讲解:v-if,v-show,v-else,v-else-if和key值的相关用法!!! v-if指令: //通过一个(v-if)指令 ,可以结合js表达式的返回值,决定一个标签是否在页面上展示或决定一个标签是否在页面上存在 //显示效果如下: v-if指令并不会显示div标签 (为了显示效果明显,特意在此页面中给div的父级设置了粉色背景颜色,便于看出页面的改变) //可以看到,调用v-if,设置为false后,div并不会显示出来. //当在控制台中,改变v-if的值为true后,d