【Vue2 ✨】 Vue2 入门之旅(六):指令与过滤器

前一篇我们学习了组件化开发。本篇将介绍 指令与过滤器,这是 Vue 模板语法的重要扩展,让页面渲染更加灵活。


目录

  1. 常见内置指令
  2. 自定义指令
  3. 过滤器
  4. 小结

常见内置指令

Vue 提供了丰富的内置指令,常见的有:

html 复制代码
<div id="app">
  <p v-text="msg"></p>
  <p v-html="htmlContent"></p>
  <p v-show="isVisible">这是一段文字</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    msg: 'Hello Vue!',
    htmlContent: '<strong>加粗的文字</strong>',
    isVisible: true
  }
})
</script>
  • v-text:设置元素的文本内容
  • v-html:渲染 HTML(⚠️注意防止 XSS 攻击)
  • v-show:通过 display 控制显示/隐藏
  • v-if / v-else / v-else-if:条件渲染
  • v-for:列表渲染
  • v-on:事件绑定
  • v-bind:属性绑定

自定义指令

除了内置指令,还可以自定义指令,用于 DOM 操作。

全局自定义指令

html 复制代码
<div id="app">
  <input v-focus>
</div>

<script>
Vue.directive('focus', {
  inserted: function (el) {
    el.focus()
  }
})

new Vue({
  el: '#app'
})
</script>

这里定义了一个 v-focus 指令,让输入框自动获取焦点。

Vue.directive() 用于注册全局自定义指令

第一个参数 'focus' 是指令名称; 第二个参数是一个配置对象,包含指令的钩子函数。
inserted 钩子函数

当指令绑定的元素被插入到 DOM 中时触发(此时元素已存在于页面中),参数 el 是指令所绑定的 DOM 元素


局部自定义指令

html 复制代码
<div id="app">
  <p v-color="'red'">这是一段红色文字</p>
</div>

<script>
new Vue({
  el: '#app',
  directives: {
    color: function (el, binding) {
      el.style.color = binding.value
    }
  }
})
</script>

这里的 v-color="'red'" 会让文字变成红色。


过滤器

过滤器可以对文本进行格式化处理,常见场景是日期、货币格式化。

全局过滤器

html 复制代码
<div id="app">
  <p>{{ price | currency }}</p>
</div>

<script>
Vue.filter('currency', function (value) {
  return '¥' + value.toFixed(2)
})

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

输出:

复制代码
¥88.50

局部过滤器

html 复制代码
<div id="app">
  <p>{{ message | upper }}</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'hello vue'
  },
  filters: {
    upper: function (value) {
      return value.toUpperCase()
    }
  }
})
</script>

输出:

复制代码
HELLO VUE

小结

  1. Vue 内置指令丰富,如 v-textv-htmlv-show 等。
  2. 可以通过 自定义指令 来封装 DOM 操作。
  3. 过滤器适合做文本格式化,支持全局和局部定义。

📚下一篇文章,我们将学习 事件处理 ,掌握 v-on、事件修饰符和键盘事件。

相关推荐
jin12332221 分钟前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_9209317040 分钟前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
落霞的思绪1 小时前
配置React和React-dom为CDN引入
前端·react.js·前端框架
Hacker_Z&Q1 小时前
CSS 笔记2 (属性)
前端·css·笔记
Anastasiozzzz1 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端
橙露2 小时前
React Hooks 深度解析:从基础使用到自定义 Hooks 的封装技巧
javascript·react.js·ecmascript
Exquisite.2 小时前
Nginx
服务器·前端·nginx
2501_920931702 小时前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...2 小时前
dnd-kit 实现表格拖拽排序
前端·react.js·表格拖拽·dnd-kit
Ulyanov2 小时前
从静态到沉浸:打造惊艳的Web技术发展历程3D时间轴
前端·javascript·html5·gui开发