美文网首页
Vue核心知识-Vue的数据绑定

Vue核心知识-Vue的数据绑定

作者: 王童孟 | 来源:发表于2018-09-06 15:58 被阅读0次

    模板绑定

    {{}} 中可以进行简单的一元、二元运算,但不能写语句

    import Vue from 'vue'
    
    new Vue({
      el: '#root',
      template: `
        <div>V
          {{isActive ? 'active' V: 'not active'}}
          {{arr.join(' ')}}
        </div>
      `,
      data: {
        isActive: false,
        arr: [1, 2, 3]
      }
    })
    

    调用全局变量

    template: `
        <div>
          {{Date.now()}}
        </div>
      `,
    

    vue 中,在模板里可以访问的,一个是绑定到 this 上的所有值,是可以访问到的;一个是 vue 自建的白名单,默认的 JS 的全局对象,也是可以访问到的。

    但是自己定义在外层的全局变量是不能访问的。

    // 控制台报错
    var globalVar = '111' // eslint-disable-line
    new Vue({
      el: '#root',
      template: `
        <div>
          {{globalVar}}
        </div>
      `  
    })
    

    绑定 html

    使用 v-html 指令

    new Vue({
      el: '#root',
      template: `
        <div>
          <p v-html="html"></p>
        </div>
      `,
      data: {
        html: '<span>123</span>'
      }
    })
    
    

    动态绑定属性

    v-bind 指令,简写 :

    new Vue({
      el: '#root',
      template: `
        <div :id="aaa">
        </div>
      `,
      data: {
        aaa: 'main'
      }
    })
    
    

    绑定事件

    v-on 指令,简写 @

    import Vue from 'vue'
    
    new Vue({
      el: '#root',
      template: `
        <div :id="aaa" @click="handleClick">
          <p v-html="html"></p>
        </div>
      `,
      data: {
        aaa: 'main',
        html: '<span>123</span>'
      },
      methods: {
        handleClick () {
          alert('clicked') // eslint-disable-line
        }
      }
    })
    
    

    vue 对这种绑定方式做过优化,不用担心性能上的问题,和事件委托对比。

    动态绑定 Class

    import Vue from 'vue'
    
    new Vue({
      el: '#root',
      template: `
        <div :id="aaa" :class="{active: !isActive}">
          <p v-html="html"></p>
        </div>
      `,
      data: {
        isActive: false,
        aaa: 'main',
        html: '<span>123</span>'
      }
    })
    

    数组的写法

    <div :id="aaa" :class="[isActive ? 'active' : '']">
    

    数组和对象合并的写方法

    <div :id="aaa" :class="[{active: isActive}]">
    

    这种写法,方便我们合并多个动态 Class

    通过 computed

    通过 computed 返回一个完整的对象,再绑定 class

    动态绑定 Style

    import Vue from 'vue'
    
    new Vue({
      el: '#root',
      template: `
        <div
          :style="styles"
        >
          <p v-html="html"></p>
        </div>
      `,
      data: {
        html: '<span>123</span>',
        styles: {
          color: 'red'
        }
      },
    })
    
    

    数组、对象合并的写法

    new Vue({
      template: `
        <div
          :class="[styles, styles2] "
        >
          <p v-html="html"></p>
        </div>
      `,
      data: {
        html: '<span>123</span>',
        styles: {
          color: 'red'
        },
        styles2: {
          color: 'black'
        }
      }
    })
    

    vue 会自动添加 prefix

    vue 会根据浏览器对样式进行判断,需要加前缀的都会加上去。

    styles: {
          color: 'red',
          appearance: 'none'
        },
    

    chorme看得到的结果

    <div id="main" class="color appearance color" style="color: red; -webkit-appearance: none;"><p><span>123</span></p></div>
    

    相关文章

      网友评论

          本文标题:Vue核心知识-Vue的数据绑定

          本文链接:https://www.haomeiwen.com/subject/mzpxgftx.html