前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >(二十)自定义指令

(二十)自定义指令

作者头像
老怪兽
发布2023-02-22 16:37:20
发布2023-02-22 16:37:20
23600
代码可运行
举报
运行总次数:0
代码可运行

自定义指令-增强的 HTML 功能

代码语言:javascript
代码运行次数:0
复制
<template>
  <main>
    <div>
      <!-- <p v-fsize="18">这是一个段落</p> -->
      <!-- <p v-fsize="fontSize">这是一个段落</p> -->
      <!-- v-fsize:[参数] 可以传递动态参数 -->
      <p v-fsize:[unit]="fontSize">这是一个段落</p>
      <button class="btn increase" @click="fontSize += 1">A</button>
      <button class="btn decrease" @click="fontSize -= 1">a</button>
    </div>
  </main>
</template>

<script>
export default {
  data() {
    return {
      fontSize: 18,
      unit: "em",   // 这里可以传递动态参数
    };
  },
};
</script>
代码语言:javascript
代码运行次数:0
复制
import { createApp } from "vue";
import App from "./App.vue";

const app = createApp(App);

// app.directive("fsize", {
//   mounted(el, binding) {
//     el.style.fontSize = binding.value + "px";
//   },
//   // 这样在 data 更新时,才会触发指令更新
//   updated(el, binding) {
//     el.style.fontSize = binding.value + "px";
//   },
// });

// 如果 mounted 和 updated 的代码相同,可以合并为一个:
// app.directive("fsize", (el, binding) => {
//   el.style.fontSize = binding.value + "px";
// });

// 带有 args:是自定义指令后面[]带的动态参数
app.directive("fsize", (el, binding) => {
  el.style.fontSize = binding.value + (binding.arg || "px");
});

app.mount("#app");

总结:写在最后

总结

v-fsize:[参数] 可以传递动态参数 args: 是自定义指令后面[]带的动态参数

如果 mounted 和 updated 的代码相同,可以合并为一个, 写成函数形式

代码语言:javascript
代码运行次数:0
复制
app.directive("fsize", (el, binding) => {
  el.style.fontSize = binding.value + "px";
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月6日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义指令-增强的 HTML 功能
    • 总结:写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档