文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
事件处理
事件绑定
通过ev-*
属性,可以在dom上绑定事件
例如:
<button ev-click={function() { alert('点击了按钮') }}>点击按钮</button>
绑定方法
大多数情况下,事件处理函数都比较复杂,直接写在模板中不太优雅。 一般通过将事件处理传入模板的render
方法,来进行绑定
例如:
<button ev-click={onClick.bind(self)}>点击了{count}次</button>
var vdt = Vdt(template);
vdt.render({
count: 0,
onClick: function() {
this.count++;
// 调用update方法去更新dom
vdt.update();
}
})
事件处理函数中this
默认指向window
,我们可以bind(self)
让它指向渲染到模板的数据`
传入参数
你可以通过bind()
方法,向事件处理函数中传入参数
<div>
点击下面的名字
<ul>
<li v-for={users}
ev-click={onClick.bind(self, value)}
>{value}</li>
</ul>
</div>
var vdt = Vdt(template);
vdt.render({
users: ['Syalvia', 'Shadow', 'Javey'],
onClick: function(user) {
alert('你点击的是' + user);
}
})
事件对象
事件处理函数的最后一个参数为事件对象,通过它我们可以访问事件的属性和方法
<div ev-click={onClickParent.bind(self)}>
点击父元素
<p ev-click={onClickChild.bind(self)}>点击子元素</p>
</div>
var vdt = Vdt(template);
vdt.render({
onClickParent: function(event) {
alert('你点击的是父元素,target: ' + event.target.tagName);
},
onClickChild: function(event) {
alert('你点击的是子元素,target: ' + event.target.tagName);
}
})
我们可以通过event.stopPropagation()
来阻止冒泡,
<div ev-click={onClickParent.bind(self)}>
点击父元素
<p ev-click={onClickChild.bind(self)}>点击子元素</p>
</div>
var vdt = Vdt(template);
vdt.render({
onClickParent: function(event) {
alert('你点击的是父元素,target: ' + event.target.tagName);
},
onClickChild: function(event) {
// 让事件冒泡
event.stopPropagation();
alert('你点击的是子元素,target: ' + event.target.tagName);
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论