数据继承

   被管理元素的子集元素都可以获取到被管理的父元素的数据对象。

   但是子元素的数据对象父元素不能获取到。

  image-20200924141112785

<body>
    <main id="id-1">
        {{msg2}}
        <section id="chilren-1">{{msg1}}</section>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "爸爸的数据",
        }
    })
    const v2 = new Vue({
        el:"#chilren-1",
        data:{
            msg2:"儿子的数据",
        }
    })
</script>

四则渲染

   标签中的内容可以根据数据层中的数据进行四则渲染。

  image-20200924141052708

<body>
    <main id="id-1">
        <p>{{msg1 + msg2}}</p>
        <p>{{msg3 * 3}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "HELLO",
            msg2: "WORLD",
            msg3: 10,
        }
    })
</script>

v-once

   当标签中添加该属性指令时,标签渲染的内容将是固定的不会再随着数据层数据的动态改变而进行改变。

  v-once

<body>
    <main id="id-1">
        <!-- HELLOWORLD 不会变 -->
        <p v-once>{{msg1}}</p>
        <!-- 会变 -->
        <p>{{msg1}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "HELLO WORLD",
        }
    })
</script>

v-html

   当标签中添加该属性指令时,该标签渲染的内容将会以HTML代码呈现。

   这会预防XSS攻击。

  注意,该属性指令应该通过等号绑定一个数据

  image-20200924140812792

<body>
    <main id="id-1">
        <p v-html="msg1"></p>
        <p>{{msg1}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "<a href='www.google.com'>谷歌搜索</a>",
        }
    })
</script>

v-text

   这个属性指令和直接使用{{}}渲染内容无太大差异,不同的是这个是通过属性指令来进行渲染。

  注意,该属性指令应该通过等号绑定一个数据

  image-20200924141010483

<body>
    <main id="id-1">
        <p v-text="msg1"></p>
        <p>{{msg1}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "HELLO,WORLD",
        }
    })
</script>

v-show

   该属性指令为false时将该标签将添加display:none的样式。

  image-20200925135104773

<body>
    <main id="id-1">
        <p v-show="conditionOne">display:block</p>
        <p v-show="conditionTwo">display:none</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            conditionOne: true,
            conditionTwo: false,
        }
    })
</script>

v-pre

   该属性指令会将标签中的内容按照原本格式进行呈现,类似于<pre>标签。

  image-20200924141325387

<body>
    <main id="id-1">
        <p v-pre>{{msg1}}</p>
        <p>{{msg1}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "HELLO,WORLD",
        }
    })
</script>

v-cloak

   在网络情况较差的环境下,可能会出现模板渲染不及时的问题。

   使用v-cloak属性指令可挡住{{}}模板语法,使用户获得更好的体验。

  注意:需要手动添加样式

  v-cloak

<style>
    [v-cloak]{
    	display: none;
    }
</style>

<body>
    <main id="id-1" v-cloak>
        <p>{{msg1}}</p>
        <p>{{msg1}}</p>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";

    setTimeout(function(){
        const v1 = new Vue({
        el: "#id-1",
        data: {
            msg1: "HELLO,WORLD",
        }
    })
    },1000)
</script>

计算属性

   计算属性computed可以让标签内容渲染出极为复杂的数据。

   既然是属性,调用时就可以不加括号。

computed

   以下是计算属性的基本使用,我们需要计算出后端返回过来的数据,书的总价。

  computed内部其实是通过getttr实现的,所以不用加括号

  image-20200924164307003

<body>
    <main id="id-1">
        <div>书籍总价格:{{totalPrice}}</div>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";
    const v1 = new Vue({
        el: "#id-1",
        data: {
            books: {
                "Vue实战": 128,
                "JavaScrip入门": 99,
                "HTML5初识": 87,
                "CSS3": 68,
            }
        },
        computed: {
            totalPrice() {
                return Object.values(this.books).reduce((prev, cur) => {
                    return prev + cur
                }, 0)
            }
        }
    })
</script>

methods

   对于上述需求,我们也可以用方法来完成,不同的是需要添加括号进行运行。

   这是methodscomputed一个最显著的区别。

  image-20200924164232073

<body>
    <main id="id-1">
        <div>书籍总价格:{{totalPrice}}</div>
        <div>书籍总价格:{{getTotaPrice()}}</div>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";

    const v1 = new Vue({
        el: "#id-1",
        data: {
            books: {
                "Vue实战": 128,
                "JavaScrip入门": 99,
                "HTML5初识": 87,
                "CSS3": 68,
            }
        },
        computed: {
            totalPrice() {
                return Object.values(this.books).reduce((prev, cur) => {
                    return prev + cur
                }, 0)
            }
        },
        methods:{
            getTotaPrice(){
                return Object.values(this.books).reduce((prev, cur) => {
                    return prev + cur
                }, 0)
            }
        }
    })
</script>

缓存特性

   computed是具有缓存的,而methods则是没有缓存。

   如下示例,使用computed对多个标签进行渲染,发现只会运行一次。

   而使用methods的话则会运行多次。

  image-20200924165513092

  

<body>
    <main id="id-1">
        <div>书籍总价格:{{totalPrice}}</div>
        <div>书籍总价格:{{totalPrice}}</div>
        <div>书籍总价格:{{totalPrice}}</div>
        <div>书籍总价格:{{getTotaPrice()}}</div>
        <div>书籍总价格:{{getTotaPrice()}}</div>
        <div>书籍总价格:{{getTotaPrice()}}</div>
    </main>
</body>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
    "use strict";

    const v1 = new Vue({
        el: "#id-1",
        data: {
            books: {
                "Vue实战": 128,
                "JavaScrip入门": 99,
                "HTML5初识": 87,
                "CSS3": 68,
            }
        },
        computed: {
            totalPrice() {
                console.log("运行computed中的方法");
                return Object.values(this.books).reduce((prev, cur) => {
                    return prev + cur
                }, 0)
            }
        },
        methods:{
            getTotaPrice(){
                console.log("运行methods总的方法");
                return Object.values(this.books).reduce((prev, cur) => {
                    return prev + cur
                }, 0)
            }
        }
    })
</script>

版权声明:本文为Yunya-Cnblogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Yunya-Cnblogs/p/13730446.html

Vue mustache语法的更多相关文章

  1. dotnet core webapi +vue 搭建前后端完全分离web架构

      架构 服务端采用 dotnet core  webapi   前端采用: Vue + router +el […]...

  2. vue 深度监听 (监听对象)

    vue 深度监听 (监听对象) 用到vue,肯定会接触到vue里面的watch普通的监听: watch:{ d […]...

  3. vue 中展示PDF内容

    vue 中展示PDF内容 不久前有个需要改的需求,以前是直接根据链接让用户下载对应pdf文件来查看,最主要是给 […]...

  4. VUE + ElementUI 从搭建到运行

    前言:本文简洁的描述VUE + ElementUI 从搭建到运行,可以根据本文先搭建出可运行的项目,然后再详细 […]...

  5. vue 对接有道文本翻译(生成单词语音)

    1.先附上有道产品文档地址 https://ai.youdao.com/DOCSIRMA/html/%E8%8 […]...

  6. 使用脚手架 vue-cli 4.0以上版本创建vue项目

    1. 什么是 Vue CLI 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI;如果你在 […]...

  7. vue-class和style样式绑定

    前言   操作元素的 class 样式列表和 style 内联样式为数据绑定是前端开发中一个常见的需求,这些样 […]...

  8. VUE 后台管理系统权限控制

    谈一谈VUE 后台管理系统权限控制   前端权限从本质上来讲, 就是控制视图层的展示,比如说是某个页面或者某个 […]...

随机推荐

  1. 网络爬虫设计中需要注意的几个问题

    做网络爬虫是件很有意义的事情。首先,它可以是一个专门的职业。从公司层面讲,业务和战略可能都需要很多数据进行多维 […]...

  2. web service 入门第一篇

    .net平台内建了对Web Service的支持,包括Web Service的构建和使用。与其它开发平台不同, […]...

  3. 精华:三次握手+四次挥手,一文搞定所有!

    三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题 […]...

  4. 程序员如何选择Mac

    2015的春节马上就要来临,作为一名职业码农,就盘算着把自己的爱机也更更新,但是,苹果迟迟不推新品,让我等屌丝 […]...

  5. 年终汇报、总结、述职:教你做一场B格满满的技术大会演讲

    什么样的演讲和呈现最受听众欢迎,内容干货?逻辑清晰?长相帅气? 偶尔被邀作为speaker参加一些圈内的技术大 […]...

  6. SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ

      1 RabbitMQ知识点   1.1 整体架构图     消息生产者将消息投递到exchange中,ex […]...

  7. ios 返回不会自动刷新页面问题

    在实际开发过程中,移动端的兼容性问题有很大的坑,安卓可以了ios不行,ios可以了安卓又失效了这样,其中ios […]...

  8. 开源轻量级移动端友好的JS地图库——leaflet学习教程

    Leaflet 是一个为建设交互性好适用于移动设备地图,而开发的现代的、开源的 JavaScript 库。代码 […]...

热门专题

展开目录

目录导航