自定义指令

<body>
<div id="app">
<!-- 自定义的指令在使用时需添加v-前缀 -->
<div v-drag="123" id="box">helloworld</div>
<p v-drag>段落</p>
</div>
</body>
<script src="vue.js"></script>
<script>

// Vue.directive,用于全局注册一个指令,第一个参数是指令名字,第二个参数是指令的配置对象
Vue.directive("drag",{
// 指令配置对象中inserted方法,当指令被插入到元素中时指令,一般用于设置指令的具体功能。
// inserted函数中,第一个参数是指令所在的元素对象,第二个参数是指令信息。
inserted(el,dir){
// console.log(el);

el.style.position = "relative";
el.style.left = "0px";
el.style.top = "0px";

// console.log("指令被识别了");

function mv(e){
let offX = e.pageX - prevX;
let offY = e.pageY - prevY;

el.style.left = parseInt(el.style.left)+offX+"px";
el.style.top = parseInt(el.style.top)+offY+"px";

prevX = e.pageX;
prevY = e.pageY;
}
let prevX = 0;
let prevY = 0;

el.addEventListener("mousedown",function(e){
prevX = e.pageX;
prevY = e.pageY;
document.addEventListener("mousemove",mv)
})

document.addEventListener("mouseup",function(){
document.removeEventListener("mousemove",mv);
});


}
})

new Vue({
el:"#app",
data:{

}
})
</script>
上一篇:ASP.NET MVC (四、ASP.NET Web API应用程序与跨域操作)(1)


下一篇:ACL 2020: 基于元学习和人机协同的端到端对话模型