课程表

Omi课程

工具箱
速查手册

Omi 事件处理

当前位置:免费教程 » JS/JS库/框架 » Omi

Omi的事件分内置事件和自定义事件。在内置事件处理方面巧妙地利用了浏览器自身的管线机制,可以通过event和this轻松拿到事件实例和触发该事件的元素。

内置事件

什么算内置事件?只要下面正则能匹配到就算内置事件。

  1. on(abort|blur|cancel|canplay|canplaythrough|change|click|close|contextmenu|cuechange|dblclick|drag|dragend|dragenter|dragleave|dragover|dragstart|drop|durationchange|emptied|ended|error|focus|input|invalid|keydown|keypress|keyup|load|loadeddata|loadedmetadata|loadstart|mousedown|mouseenter|mouseleave|mousemove|mouseout|mouseover|mouseup|mousewheel|pause|play|playing|progress|ratechange|reset|resize|scroll|seeked|seeking|select|show|stalled|submit|suspend|timeupdate|toggle|volumechange|waiting|autocomplete|autocompleteerror|beforecopy|beforecut|beforepaste|copy|cut|paste|search|selectstart|wheel|webkitfullscreenchange|webkitfullscreenerror|touchstart|touchmove|touchend|touchcancel|pointerdown|pointerup|pointercancel|pointermove|pointerover|pointerout|pointerenter|pointerleave)

内置事件怎么绑定?如下所示:

  1. class EventTest extends Omi.Component {
  2. constructor(data) {
  3. super(data);
  4. }
  5. handleClick(dom, evt){
  6. alert(dom.innerHTML);
  7. }
  8. render () {
  9. return `<div onclick="handleClick(this, event)">Hello, Omi!</div>`;
  10. }
  11. }

自定义事件

开发者自己定义的组件的事件,称为自定义事件。这里拿分页作为例子:

  1. import Omi from '../../src/index.js';
  2. import Pagination from './pagination.js';
  3. import Content from './content.js';
  4. Omi.makeHTML('Pagination', Pagination);
  5. Omi.makeHTML('Content', Content);
  6. class Main extends Omi.Component {
  7. constructor(data) {
  8. super(data);
  9. }
  10. installed(){
  11. this.content.goto(this.pagination.data.currentPage+1);
  12. }
  13. handlePageChange(index){
  14. this.content.goto(index+1);
  15. }
  16. render () {
  17. return `<div>
  18. <h1>Pagination Example</h1>
  19. <Content name="content" />
  20. <Pagination
  21. name="pagination"
  22. data-total="100"
  23. data-page-size="10"
  24. data-num-edge="1"
  25. data-num-display="4"     
  26. onPageChange="handlePageChange" />
  27. </div>`;
  28. }
  29. }
  30. Omi.render( new Main(),'body');

如上面的onPageChange就是自定义事件,触发会执行handlePageChange。onPageChange方法是在Pagination中执行:

  1. import Omi from '../../src/index.js';
  2. class Pagination extends Omi.Component {
  3. ...
  4. ...
  5. ...
  6. linkTo: "#",
  7. prevText: "Prev",
  8. nextText: "Next",
  9. ellipseText: "...",
  10. prevShow: true,
  11. nextShow: true,
  12. onPageChange: function () { return false; }
  13. }, this.data);
  14. this.pageNum = Math.ceil(this.data.total / this.data.pageSize);
  15. }
  16. goto (index,evt) {
  17. evt.preventDefault();
  18. this.data.currentPage=index;
  19. this.update();
  20. this.data.onPageChange(index);
  21. }
  22. ...
  23. ...
  24. ...
  25. }

这里取了Pagination组件的部分代码。高亮的就是执行onPageChange的地方。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号