下面是我注册全局指令的代码,这是我注册的一个通过 hljs 解析 html -> pre code 的指令,数据是异步获取的:

app.directive("parse-code", (el, binding) => {
// ......
console.log("execute!!!");
});

这样写是没有问题的,控制台打印一下:

执行了两次,我最开始以为是数据异步引起的。第一次:没有获取时执行一次;第二次:获取到了之后更新 DOM 执行了一次。然而,并不是我想的这样。查阅官方文档:

directive("parse-code", {
// 在绑定元素的 attribute 前
// 或事件监听器应用前调用
created() {
console.log("d-created");
},
// 在元素被插入到 DOM 前调用
beforeMount() {
console.log("d-beforeMount");
},
// 在绑定元素的父组件
// 及他自己的所有子节点都挂载完成后调用
mounted() {
console.log("d-mounted");
},
// 绑定元素的父组件更新前调用
beforeUpdate() {
console.log("d-beforeUpdate");
},
// 在绑定元素的父组件
// 及他自己的所有子节点都更新后调用
updated() {
console.log("d-updated");
},
// 绑定元素的父组件卸载前调用
beforeUnmount() {
console.log("d-beforeUnmount");
},
// 绑定元素的父组件卸载后调用
unmounted() {
console.log("d-unmounted");
}
});

指令有钩子函数,在 mounted 钩子函数里面注册指令:

app.directive("parse-code", {
mounted() {
console.log("execute!!!");
}
});

控制台打印一下:

执行了一次,总结:写自定义指令最好写在钩子函数里面,以免多次执行。

最新文章

  1. 调用AJAX做登陆和注册
  2. mysql禁用autocommit,以及遇到的问题
  3. 【mysql】使用脚本对mysql状态进行监控
  4. loadruner报错:Step download timeout(120 seconds)的一个解决方法
  5. Neutron LBaaS Service(1)—— Neutron LBaaS Service基本知识
  6. Microsoft Azure云计算第一步—试用帐户申请
  7. 机器学习10大经典算法.doc
  8. Storm官方文档翻译之设置开发环境
  9. h5drag事件
  10. bzoj千题计划274:bzoj3779: 重组病毒
  11. 十六进制字符串转化为十进制值strtoul函数
  12. html5标签基础
  13. mysql 存储引擎简介
  14. mysql定时器设置开机默认自启动
  15. installation failed with message INSTALL_FAILED_INSUFFICIENT_STORG
  16. Python虚拟环境的安装与使用
  17. 关于sql server profiler 监控工具的使用
  18. Vue 子组件调用父组件方法
  19. eclipse中增加多个Tomcat
  20. java Concurrent包学习笔记(五):Semaphore

热门文章

  1. 【Kafka】Quota配额命令、文档相关概念
  2. K近邻算法(k-nearest neighbor, kNN)
  3. Windows Terminal ssh 远程 Linux 和使用 Git
  4. easygui 之integerbox()、enterbox()、multenterbox() 三种输入函数的使用
  5. python循环结构之while循环
  6. vue中单独封装elementui中的Dialog弹框组件
  7. c语言学习总结(原创)
  8. [C#]C++/CLI中interior_ptr和pin_ptr的区别
  9. [cocos2d-x]捕鱼达人鱼和子弹的碰撞检测
  10. 【Java复健指南15】链表LinkedList及其说明