-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vue自定义指令 #8
Comments
获取指令所在的标签其他属性值添加属性params,并接收一个带属性的数组,我们就可以在里面用this.params获取对应的值 directives: {
wsscat: {
params: ['a', 'b'],
bind: function() {
console.log("wsscat")
},
console.log(this.params)
}
} 视图 <p v-wsscat="name" a="1" b="arr">{{name}}</p> |
自定义Touch指令new Vue({
el: '#demo',
data: {
name: 'wsscat'
},
methods: {
},
//私有的指令
directives: {
touch: {
params: ['a', 'b'],
bind: function(value) {
console.log(this.params)
function direction() {
if(Math.abs(xStart - xEnd) >= Math.abs(yStart - yEnd)) {
if(xStart >= xEnd) {
console.log("left")
} else {
console.log("right")
}
} else {
if(yStart >= yEnd) {
console.log("up")
} else {
console.log("down")
}
}
}
var xStart, xEnd, yStart, yEnd;
this.el.addEventListener('touchstart', function(e) {
//console.log("start:")
//console.log(e)
xStart = e.targetTouches[0].pageX;
yStart = e.targetTouches[0].pageY;
});
this.el.addEventListener('touchend', function(e) {
//console.log("end")
//console.log(e)
xEnd = e.changedTouches[0].pageX;
yEnd = e.changedTouches[0].pageY
direction(xStart, xEnd, yStart, yEnd)
})
}
}
}
}) 视图 <div id="demo">
<p class="A1" v-touch='name' :a="name" b="abc">{{name}}</p>
</div> |
123 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
全局定义
我们可以用Vue.directive来全局定义一个指令,定义完之后我们就可以在对应html结构前缀v-加上directive名字来激活这个指令
视图如下
注意这里我们该指令对应的标签受demo构造器控制,我们可以用this.expression获取函数的名字,然后用this.vm来拿到构造器里面的数据进而触发我们想要触发的方法
在这里要注意的是如果把逻辑放在了update里面定义的话test()会首先先自执行一次
当然其实我们直接这样写
<button v-cclick:click="test">Ok</button>
_test_没有了两个大括号,我们获取这个函数名再去执行就更加方便了,我们就可以直接这样来执行函数了self.vm[self.expression]()
局部定义
我们还可以在构造起里面定义指令,这样就不会担心影响到其他构造器的指令了,只要在加上属性directives就可以对它进行定义了
视图如下
上面的代码我们把逻辑写在update里面,因为我们这里的name值会一直变化,第一次进来先触发一次update里面的逻辑,后面每一次name的变化都会触发update里面的逻辑,我们这里在输入框对应输入red,yellow都会有颜色的变化,所以这里update符合需求
The text was updated successfully, but these errors were encountered: