首页 > 语言 > JavaScript > 正文

浅谈JavaScript的Polymer框架中的事件绑定

2024-05-06 16:24:01
字体:
来源:转载
供稿:网友

这篇文章主要介绍了浅谈JavaScript的Polymer框架中的事件绑定,Polymer是由Google开发的针对Web UI的框架,需要的朋友可以参考下

既然是一套完整的前端框架那就一定有提供事件绑定相关的支持。其实在之前的例子中就使用过事件绑定,只是没有单独系统地介绍过而已。 Polymer 的事件思想是对事件处理函数尽可能地都命名并定义到 VM 上,我觉得这个做法是在有意地把 VM 这一层隔离出来。

下面这个例子给按钮和其所在的 Shadow DOM Host 都绑定了个事件,点击按钮后两个事件都会触发。

运行

 

 
  1. <script> var Polymer = { dom: 'shadow' }; </script> 
  2. <base href="http://www.web-tinker.com/share/" /> 
  3. <link rel="import" href="polymer/polymer.html" /> 
  4.  
  5. <dom-module id="demo-test"
  6. <template> 
  7. <button on-click="clickHandler">求点击 (=~ω~=)</button> 
  8. </template> 
  9. <script> 
  10. Polymer({ 
  11. is: 'demo-test'
  12. listeners: { 
  13. 'click''clickHandler' 
  14. }, 
  15. clickHandler: function(e) { 
  16. console.log(e.target); 
  17. }  
  18. }); 
  19. </script> 
  20. </dom-module> 
  21.  
  22. <demo-test></demo-test> 

listeners 是一个用于给当前 Shadow DOM Host 添加事件的(虽然我觉得它没卵用)。直接在 DOM 元素上的 on-* 属性也可以给某个元素绑定事件。这些方式绑定的都是 DOM 事件,事件触发时传递过去的对象就是原生的事件对象。

除了以上这些直接作为属性设置的事件绑定方式之外,我们还可以动态地绑定事件。

运行

 

 
  1. <script> var Polymer = { dom: 'shadow' }; </script> 
  2. <base href="http://www.web-tinker.com/share/" /> 
  3. <link rel="import" href="polymer/polymer.html" /> 
  4.  
  5. <dom-module id="demo-test"
  6. <template> 
  7. <button>求点击 (=~ω~=)</button> 
  8. </template> 
  9. <script> 
  10. Polymer({ 
  11. is: 'demo-test'
  12. ready: function() { 
  13. // Polymer 内置 
  14. this.listen(this'click''clickHandler'); 
  15. // 原生 
  16. this.addEventListener('click'this.clickHandler); 
  17. },  
  18. clickHandler: function(e) {  
  19. console.log(e); 
  20. }); 
  21. </script> 
  22. </dom-module> 
  23.  
  24. <demo-test></demo-test> 

Polymer 总是希望我们对事件处理函数命名,比如其自带的 listen 方法对元素绑定的不是一个事件处理函数,而是一个事件处理函数名。也许这么做的目的是将 VM 和 M 完全隔离开来,但是我并不喜欢这样。不过 Shadow DOM Host 本身也是一个原生对象,所以直接使用原生的 addEventListener 也是可以的,不过既然框架内有提供,我也不推荐写原生。也许是我的思想太 low 的,无法领悟 Polymer 如此设计的良苦用心吧?

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选