vue 指令的设计实现
与angular 不同,vue的指令不是通过依赖注入实现的,而是通过全局的注册系统。指令通过调用 Vue 实例的 Vue.directive 方法并传入指令的名称和定义来注册。
一旦注册,该指令可以在该Vue实例或其后代渲染的任何模板中使用,只需在其名称前加上v-前缀即可。
指令定义是一个JavaScript对象,可以包含一个或多个生命周期钩子,如bind绑定、inserted插入、update更新和 unbind解除绑定。这些钩子将在指令生命周期的不同阶段被调用,允许你执行特定于该阶段的逻辑。
自定义指令实现v-if
Vue.directive('if', {
bind: function (el, binding, vnode) {
if (binding.value) {
el.style.display = 'none';
}
},
update: function (el, binding, vnode) {
if (binding.value) {
el.style.display = 'none';
} else {
el.style.display = '';
}
}
});

浙公网安备 33010602011771号