程序员

Vue基础系列(二) v-指令

2019-11-25  本文已影响0人  极客James

🎉 Vue构建大型单页面电商应用 开源啦!点我看源码🚀🚀

阅读时间预估:5分钟

啥是指令?

指令通俗的来说就是一个方法名的缩写,通过特定的指令,完成特定的事情,vue中指令前缀为v-

指令的作用

表达式的值改变时,将其产生连带的影响,响应地作用于DOM

常用的指令有哪些?

v-text

<h1 v-text="msg"></h1>

v-html

<h1 v-html="msg"></h1>

v-bind

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

v-on

<!-- 完整语法 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>

事件修饰符

v-model

<input type="text" v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

v-for

<!-- 1 基础用法 -->
<div v-for="item in items">
  {{ item.text }}
</div>
<!-- item 为当前项,index 为索引 -->
<p v-for="(item, index) in list">{{item}} -- {{index}}</p>
<!-- item 为值,key 为键,index 为索引 -->
<p v-for="(item, key, index) in obj">{{item}} -- {{key}}</p>
<p v-for="item in 10">{{item}}</p>

key属性

<div v-for="item in items" :key="item.id">
  <!-- 内容 -->
</div>

样式处理 -class和style

<!-- 1 -->
<div v-bind:class="{ active: true }"></div> ===> 解析后
<div class="active"></div>
 
<!-- 2 -->
<div :class="['active', 'text-danger']"></div> ===>解析后
<div class="active text-danger"></div>
 
<!-- 3 -->
<div v-bind:class="[{ active: true }, errorClass]"></div> ===>解析后
<div class="active text-danger"></div>
 
 
--- style ---
<!-- 1 -->
<div v-bind:style="{ color: activeColor, 'font-size': fontSize + 'px' }"></div>
<!-- 2 将多个 样式对象 应用到一个元素上-->
<!-- baseStyles 和 overridingStyles 都是data中定义的对象 -->
<div v-bind:style="[baseStyles, overridingStyles]"></div>

v-if 和 v-show

<p v-show="isShow">这个元素展示出来了吗???</p>
<p v-if="isShow">这个元素,在HTML结构中吗???</p>

提升性能:v-pre

<span v-pre>{{ this will not be compiled }}</span>

提升性能:v-once

<span v-once>This will never change: {{msg}}</span>

过滤器 filter

全局过滤器

Vue.filter('filterName', function (value) {
  // value 表示要过滤的内容
})
<div>{{ dateStr | date }}</div>
<div>{{ dateStr | date('YYYY-MM-DD hh:mm:ss') }}</div>
 
<script>
  Vue.filter('date', function(value, format) {
    // value 要过滤的字符串内容,比如:dateStr
    // format 过滤器的参数,比如:'YYYY-MM-DD hh:mm:ss'
  })
</script>

局部过滤器

{
  data: {},
  // 通过 filters 属性创建局部过滤器
  // 注意:此处为 filters
  filters: {
    filterName: function(value, format) {}
  }
}

按键值修饰符

// 只有在 keyCode 是 13 时调用 vm.submit()
@keyup.13="submit"
// 使用全局按键别名
@keyup.enter="add"
 
---
 
// 通过全局 config.keyCodes 对象自定义键值修饰符别名
Vue.config.keyCodes.f2 = 113
// 使用自定义键值修饰符
@keyup.enter.f2="add"

监视数据变化 - watch

new Vue({
  data: { a: 1, b: { age: 10 } },
  watch: {
    a: function(val, oldVal) {
      // val 表示当前值
      // oldVal 表示旧值
      console.log('当前值为:' + val, '旧值为:' + oldVal)
    },
 
    // 监听对象属性的变化
    b: {
      handler: function (val, oldVal) { /* ... */ },
      // deep : true表示是否监听对象内部属性值的变化 
      deep: true
    },
 
    // 只监视user对象中age属性的变化
    'user.age': function (val, oldVal) {
    },
  }
})

计算属性 - computed

var vm = new Vue({
  el: '#app',
  data: {
    firstname: 'jack',
    lastname: 'rose'
  },
  computed: {
    fullname() {
      return this.firstname + '.' + this.lastname
    }
  }
})

看完这篇不知道面前的这位大侠是否真正的领略到vue指令的巧妙之处,一定要多用多理解每个指令内部是如何实现的,进阶大佬非常管用!!欢迎留言点赞加评论,文章有不对的地方恳请各位大佬提出.

如果我的分享对面前的这位大侠有所启发,恳请以程序员最高礼遇点✨ 星加分享的方式鼓励我.

关注公众号回复:学习 领取前端最新最全学习资料,也可以进群和大佬一起学习交流

image
猛戳我点星星
上一篇 下一篇

猜你喜欢

热点阅读