美文网首页VUE
v-bind指令

v-bind指令

作者: microkof | 来源:发表于2017-12-05 11:37 被阅读5812次

v-bind指令用于给html标签设置属性。

基本用法

<div id="app">
  <div v-bind:id="id1">文字</div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    id1: 'myid'
  }
})
</script>

这样得到<div id="myid">文字</div>

class 属性绑定

同时传入一个或多个类:

<div id="app">
    <div v-bind:class="[activeClass, errorClass]"></div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    activeClass: 'active',
    errorClass: 'text-danger'
  }
})
</script>

<div v-bind:class="{active: isActive}">文字</div>这种写法的意思是,如果isActive为true,则有active类,如果为false,则没有active类。

<div id="app">
  <div v-bind:class="{active: isActive}">文字</div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    isActive: true
  }
})
</script>

如果同时多个类都要判断,则可写成<div v-bind:class="{active: isActive, highlight: isHighlight}">文字</div>

还可以直接绑定数据里的一个对象:<div v-bind:class="classObject"></div>,其中classObject是data对象的一个子对象,名称可任意。

而且还可以绑定computed里的属性,毕竟data的数据是静态的,computed的属性可以计算:

<div id="app">
  <div v-bind:class="classObject">文字</div>
</div>

<script>
new Vue({
  el: '#app',
  computed: {
    classObject: function () {
      // 计算过程省略,假设得出了isActive和isDanger的布尔值
      return {
        'active': isActive,
        'text-danger': isDanger
      }
    }
  }
})
</script>

style 属性绑定

跟class属性绑定是一样的道理。

<div id="app">
    <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    activeColor: 'green',
    fontSize: 30
  }
})
</script>

配合v-model实现数据绑定

数据绑定的含义这里先不细说,就先理解为:各种代码之间有数据关联,牵一发而动全身就行了。

<style>
.class1{
  background: #444;
  color: #eee;
}
</style>
<div id="app">
  <label for="r1">修改颜色</label><input type="checkbox" v-model="cssa" id="r1">
  <br><br>
  <div v-bind:class="{'class1': cssa}">
    文字
  </div>
</div>
    
<script>
new Vue({
    el: '#app',
  data:{
      cssa: false
  }
});
</script>

解释:

v-model="cssa"指令有2个作用,一个作用是设定<input>的初始值,也就是到底打不打勾,另一个作用是切换cssa的状态,也就是说当<input>值为false时,cssa的值也是false,当<input>值为true时,cssa的值也是true。

然后,v-bind:class="{'class1': cssa}"意味着,立即生成一个类似于<div class="">文字</div>或者<div class="class1">文字</div>的标签,具体生成哪个,由cssa的值决定。

最后,

  data:{
      cssa: false
  }

定义了cssa的初始值,就是false。它影响两者,一个是影响<input>,另一个是影响<div>。假设cssa的初始值设成true,那么,<input>会默认打钩,<div>的class也会有值class1。

注意:v-bind:冒号后面是一个赋值表达式,不要理解为html代码,也就是说v-bind:class="{'class1': cssa}"表示这个div的属性为class,值由cssa决定,尤其是“class”字符,虽然通常情况下它就是属性名,但是不要直接理解为vue在拼接html代码。

属性值拼接

<div id="app">
  <div v-bind:id="'list-' + id">文字</div>
</div>
  
<script>
new Vue({
  el: '#app',
  data: {
    id : 1
  }
})
</script>

得到<div id="list-1">文字</div>

v-bind:id="'list-' + id"可以看到,id="'list-' + id"确实是表达式,只有'list-'是真正的字符串。

配合过滤器实现数据加工

过滤器,其实就是作用在传递的数据上的函数。

<div id="app">
  <a v-bind:href='url | add_protocol'>文字</a>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    url: 'microkof.com'
  },
  filters: {
    add_protocol: function (value) {
      if (!value) {
        return '';
      } else {
        return 'https://' + value;
      }
    }
  }
})
</script>

比如说,我想给<a>附上href属性,不过恰好有一个问题是href的值没有协议(https://),所以我想给它加上协议,那么就定义一个过滤器(filters),过滤器的名字叫add_protocol,值是一个函数。

v-bind 缩写

v-bind由于太常用,可以缩写。缩写方式是:直接不写,从冒号开始写。

<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>

相关文章

  • Vue基础指令

    Vue循环指令 Vue绑定指令: v-bind:style,v-bind:class: v-model双向数据绑定...

  • vue中的指令

    v-bind: v-bind动态绑定指令,官方文档是这样来说的: 1.:v-bind动态绑定指令,默认情况下标签自...

  • 【Vue】常用指令之v-bind

    ?【Vue】学习养成记,【程序员必备小知识】 ? 今日小知识——Vue常用指令之v-bind v-bind指令是专...

  • v-bind

    v-bind,绑定属性的一个指令 基本用法:v-bind:title="mytitle" or :title=...

  • vue模板语法

    Mustache 语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind 指令 指令 指令(dire...

  • vue 零散学习档案

    引言 vue中“:”、“.”、“@”意义 “:” 是指令 “v-bind”的缩写“@”是指令“v-on”的缩写“....

  • 2018-09-14 vue常用指令

    v-bind v-bind 特性被称为指令,v-bind是绑定属性的,如下边的例子:点击切换图片 其中用v-bin...

  • v-bind指令

    v-bind指令用于给html标签设置属性。 基本用法 这样得到 文字 class 属性绑定 同时传入一个或多个类...

  • Vue.js从0到1:v-bind指令

    Vue.js从0到1:v-bind 指令 1. 代码演示 v-bind :绑定 : 绑定class、绑定style...

  • VUE初学习笔记

    //指令v-if="shown"v-for="item in items"v-bind:title="messag...

网友评论

    本文标题:v-bind指令

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