• v-text,v-html,v-bind


    转自:

    1. v-text

    作用 : 操作元素中的纯文本
    快捷方式 : {{}}

    栗子1

    简写形式:将v-text=""换成{{}}

    <div id="app">
      {{ message }}
    </div>
    var app = new Vue({
       el : '#app',
       data : {
        message : 'hello world' 
     }
    })
    

    结果:hello world

    栗子2
    <h1 id="app1" v-text="'今天是'+year+'年'+month+'月'"></h1>
    var app1 = new Vue({
        el : "#app1",
        data : {
            year : new Date().getFullYear(),
            month : new Date().getMonth()+1
        }
    })
    

    结果:今天是2017年5月
    等同于:<h1 id="app1">今天是{{year}}年{{month}}月</h1>

    1. 这里v-text="",双引号并不是代表字符串,而是vue自定义的划定界限的符号。如果我们里边输出字符串,就要在里边再添加一对单引号。而且经测验,要想输出字符串,必须添加单引号,否则会报错
    2. 这里month默认是从0开始的,所以我们要+1
    3. 这里{{}}代表的就是"",所以在v-text=""中,我们在内容里边就不需要再写{{}}了,直接写data值就行
    栗子3
    <div id='app'>
        <h1>{{ message }}</h1>
        <h1>{{ message.concat('!!!') }}</h1>
        <h1>{{ message? 'has message' : 'no message' }}</h1>
        下面这两个语句报错
        <h1>{{ var message = 'message' }}</h1>
        <h1>{{ if(message){return info} }}</h1> 
    </div>
    var app = new Vue({
        el : '#app',    // 绑定了上边的id='app'的元素
        data : {
            message : 'hello'
        }   
    })
    

    结果:
      hello
      hello!!!
      has message
      第四五句报错

    {{}}里边支持表达式
    但不是所有的表达式都能放在里边,只有单个语句的可以,像var和if就不可以
    如果想使用if语句的话,用三元运算符代替

    栗子4

    可以采用对象的形式传递多个数据

    <div id="app2">
        <p>姓名 : {{ person.name }}</p>
        <p>性别 : {{ person.sex }}</p>
        <p>年龄 : {{ person.age }}</p>
    </div>
    var app2 = new Vue({
        el : "#app2",
        data : {
            person : {
                name : '小明',
                sex : '男',
                age : 8
            }
        }
    })
    

    结果:
     姓名 : 小明
     性别 : 男
     年龄 : 8


     
     

    补充一点:

    用{{}}的弊端:当网速很慢或者下面的JavaScript写错时,会直接将{{message}}渲染到页面
    而使用v-text="message" 如果出错是不显示的
    所以在实际开发中用v-text比较多

    2. v-html

    作用 : 操作元素中的HTML标签
    v-text会将元素当成纯文本输出,v-html会将元素当成HTML标签解析后输出

    栗子1
    <div id="app3">
        {{ message }}
    </div>
    var app3 = new Vue({
        el : "#app3",
        data : {
            message : "[图片上传失败...(image-b28bd8-1533127932697)]"
        }
    })
    

    结果:输出代表图片名称的字符串,而不是将图片输出
    由此可见:{{}}/v-text不能解析html元素,只会照样输出

    栗子2
    <div id="app3" v-html="message"></div>
    var app3 = new Vue({
        el : "#app3",
        data : {
            message : "[图片上传失败...(image-6734f-1533127932697)]"
        }
    })
    

    结果 : 成功显示图片


     
    3.gif

    注意 : 你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容插值。

    3. v-bind

    作用 : 绑定标签属性,:后面是标签属性名

    栗子1
    <div id="app">
        <a href="" v-bind:href="hrefvalue">
            [图片上传失败...(image-27c495-1533127932697)]
        </a>
    </div>
    var app = new Vue({
        el : "#app",
        data : {
            hrefvalue : 'http://www.baidu.com',
            source : 'img/1.jpg'
        }
    })
    
     
    5.gif
    栗子2
    <div id="app2">
        <span v-bind:title = 'message'>
            鼠标悬停几秒钟查看此处动态绑定的提示信息!
        </span>
    </div>
    var app2 = new Vue({
        el : '#app2',
        data : {
            message : '页面加载于' + new Date()
        }
    })
    

     

     
     
     
    补充v-bind小例子
    <div :class="{classA:isOk}">根据条件判断绑定</div>
    <div :class="[classA,classB]">绑定多个class值,数组</div>
    <div :class="isOk?classA : classB">绑定三元运算符</div>
    <p>
        <input type="checkbox" id="isOk" v-model="isOk">
        <label for="isOk">isOk = {{isOk}}</label>
    </p>
    <div :style="{color:red, fontSize:font}">绑定style</div>
    <div :style="styleObject">对象方式绑定style</div>
    
    var app = new Vue({
        el : "#app",
        data : {
            imgSrc : "./img/dele.jpg",
            webUrl : "www.baidu.com",
            className : "a",
            isOk : true,
            classA : 'a',
            classB : 'b',
            red : 'red',
            font : '30px',
            styleObject : { // 将style写成对象写法
                color : 'orange',
                fontSize : '40px'
            }
        }
    })



    转自:https://www.jianshu.com/p/4131e8b033de

  • 相关阅读:
    这些哭笑不得的情景,每一个程序猿都可能面对
    创建并使用静态库(ar 命令)
    C++中typename和class的区别
    C++11 tuple
    c++ map与 qt QMap insert 区别
    各个函数消耗的时间profiling和内存泄漏valgrind
    Linux查看代码量
    Linux应用程序打包
    静态代码检查工具 cppcheck 的使用
    制作Linux下程序安装包——使用脚本打包bin、run等安装包
  • 原文地址:https://www.cnblogs.com/JAVA-STUDYER/p/10845863.html
Copyright © 2020-2023  润新知