指令

2017-08-09  本文已影响7人  Look_a_Look
定义

指令(Directives)是带有 v- 前缀的特殊属性。指令属性的值预期是单一 JavaScript 表达式(除了 v-for,之后再讨论)。指令的职责就是当其表达式的值改变时相应地将某些行为应用到 DOM 上

  1. 一些指令能接受一个参数,在指令后以冒号指明。
    <a v-bind:href="url"></a>
  1. 修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定
    <form v-on:submit.prevent="onSubmit"></form>

常用内置指令



  <div v-if="type === 'A'">A</div>
  <div v-else-if="type === 'B'"> B</div>
  <div v-else-if="type === 'C'">C</div>
  <div v-else> Not A/B/C</div>


  <ul id="example-1">
    <li v-for="item in items">
      {{ item.message }}
    </li>
  </ul>
  <ul id="example-2">
    <li v-for="(item, index) in items">
      {{ parentMessage }} - {{ index }} - {{ item.message }}
    </li>
  </ul>
  <div v-for="(value, key, index) in object">
    {{ index }}. {{ key }} : {{ value }}
  </div>
  var example1 = new Vue({
    data: {
      items: [
        {message: 'Foo' },
        {message: 'Bar' }
      ],
      object: {
        firstName: 'John',
        lastName: 'Doe',
        age: 30
      }
    }
  })
  // Vue.set
  Vue.set(example1.items, indexOfItem, newValue)

  <div v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
  
  <div v-bind:class="[activeClass, errorClass]">
  <div v-bind:class="classObject"></div>
  data: {
    activeClass: 'active',
    errorClass: 'text-danger
    classObject: {
      active: true,
      'text-danger': false
    }
  }
  computed: {
    classObject: function () {
      return {
        active: this.isActive && !this.error,
        'text-danger': this.error && this.error.type === 'fatal',
      }
    }
  }

v-bind:style也有类似加强功能

  <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
  <div v-bind:style="styleObject"></div>
  data: {
    activeColor: 'red',
    fontSize: 30
    styleObject: {
      color: 'red',
      fontSize: '13px'
    }
  }

  <button v-on:click="counter += 1">增加 1</button>
  <button v-on:click="greet">Greet</button>
  <button v-on:click="greet('hi',$event)">Say hi</button>
  <a v-on:click.stop="doThis"></a>  <!-- 阻止单击事件冒泡 -->
  <input v-on:keyup.13="submit">  <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
  new Vue({
    el: '#example-3',
    methods: {
    greet: function (message) {
      alert(message)
    }
  })

<input type="checkbox" id="checkbox" v-model="checked"><!-- `checked` 为 true 或 false -->
<input type="radio" id="one" value="One" v-model="picked" value="a"><!-- 当选中时,`picked` 为字符串 "a" -->
<input type="radio" id="one" value="One" v-model="picked" v-bind:value="a"><!-- 当选中时,vm.pick === vm.a -->
<select v-model="selected">
    <option disabled value="">请选择</option>
    <option>A</option>
    <option>B</option>
    <option>C</option>
</select>
<input v-model.trim="msg">
上一篇下一篇

猜你喜欢

热点阅读