返回介绍

事件处理

发布于 2021-04-10 06:03:37 字数 4211 浏览 1021 评论 0 收藏 0

事件绑定

通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文