摘要:我们修改下例子定义借口,构造时将重新赋值测试一下这种构造函数传参的方式只适用于,的创建方式,而且它种方式不支持,原因你自己拍脑袋想想就懂了。
之前一篇算是带大家大致领略了一下Polymer的风采。这篇我们稍微深入一丢丢,讲下组件的注册和创建。
创建自定义组件的几种方式这里我们使用Polymer函数注册了一个自定义组件"my-element"
// register an element Polymer({ is: "my-element", created: function() { this.textContent = "My element!"; } });
在hello world篇中我们使用的是直接在html页面里写标签的方式来创建这个自定义组件
但是如果my-element需要被动态创建,使用上面的方式显然就满足不了要求。所以Polymer提供了另外2种创建方式
第一种
var element = document.createElement("my-element");
啊,我们可以调用原生dom api一样来创建自定义组件了,这是一件多么让人愉悦的事情。
我们来测试一下
第二种
这种方式需要我们在注册自定义组件的时候进行一点小的改动,调用Polymer函数定义的时候把返回值赋个一个全局变量MyElement
// register an element MyElement = Polymer({ is: "my-element", created: function() { this.textContent = "My element!"; } });
var el2 = new MyElement();
从这里可以得知Polymer函数会返回一个自定义组件的构造函数,使用new就可以创建它了。
我们来测试一下
对于这种方法,Polymer还提供了一个接口factoryImpl可以让我们在创建自定义组件的时候传入运行时的构造参数,而不是只能死死地使用注册组件时候定义的内容。
我们修改下例子
{{helloMessage}}
测试一下
这种构造函数传参的方式只适用于,new CustomElement的创建方式,而且它2种方式不支持,原因你自己拍脑袋想想就懂了。
factoryImpl 被调用的时机是在dom被创建,默认值被设置了以后,具体的我们会在生命周期篇里谈。
扩展原生的html标签首先告诉大家一个非常遗憾的消息,Polymer当前版本暂不支持扩展自己定义组件(既自己不能扩展自己,但是会在以后版本中支持大家请擦干净鼻涕静静等待),目前只能扩展原生的html标签如input, button等。Polymer提供了一个extends接口来实现扩展
my-input.html
如果使用的是dom api我们需要这样来创建
var el1 = document.createElement("input", "my-input")
如果使用html标签的方式,我们要这样写
窃以为,后面2种方式来创建一个组件是非常非常扯蛋的一件事情,使用者必须非常清楚组件的继承关系,你说这还不扯蛋么?期望Polymer在后续版本的api中对于组件扩展这一块内容,消灭以上两种不靠谱的创建方式。
在html主文件里定义“自定义组件首先说下,只有在写demo的时候,才会用到这种写法。生产环境中,都是需要把组件写在各自独立的文件中。
Defining a Polymer Element from the Main Document Hi! I"m a Polymer element that was defined in the main document!
HTMLImports.whenReady()这个方法你可以把它理解成JQ里的document.ready()或者AMD里的domReady(),可以确保引用的组件dom都被加载完了再进行下一步的调用,一般都是用在index.html也就是程序的入口处。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/86043.html
摘要:数据绑定是一个非常屌的的办法能让你快速的传播组件的变化,减少代码的行数。你可以用双大括弧来声明你需要绑定的属性,大括弧在运行时会被替换成括弧内的属性值。本篇完,下篇还没想好要写啥。 书接上回,上回叔说到如何注册(创建)一个自定义组件,这回我们来讲讲它的数据绑定。 使用数据绑定 当然,你可能不会仅仅满足上文教的简单的静态自定义组件,你通常需要动态的更新你的dom组件。 数据绑定是一个非常...
摘要:书接上回,我们已经把运行的准备工作做好,接下来就敲点代码来感受下它到底是个什么东东,这一篇里我基本会照搬官网的几个例子来快速过一下。非常重要的一点是,这个组件的标签名必须要以符号分割。 书接上回,我们已经把运行Polymer的准备工作做好,接下来就敲点代码来感受下它到底是个什么东东,这一篇里我基本会照搬官网Quick tour的几个例子来快速过一下。 注册一个自定义组件 需要调用Pol...
摘要:而不写,则监听是加在整个组件之上的。组件的输入就是属性赋值,输出则是事件的触发。运行结果消息机制这里来聊聊组件化开发的消息机制,这个并不局限于或者应用,适用于所有的组件式开发技术。 这篇会讲下组件内部的事件处理机制,以及组件和外界通讯的处理方式(父子通讯,兄弟通讯等) 组件内的事件处理机制 第一种,直接写在标签里,用on-eventName=eventHandler的方式 ...
摘要:组件也一样,从被创建,被解析,被赋初始化值,被添加到舞台,被绘制,被布局,使用过程中被修改了值,被重绘,被重新布局,最终被父组件移除结束惨淡的一身等等,都可以称为组件的生命周期。 这篇来谈谈polymer最核心的一块,也可以说是web components技术最最核心的一块内容 生命周期,大家在学习一些框架的时候最好都去了解一下它们的生命周期。 什么是生命周期 什么是生命周期?故名思议...
摘要:所以又以一个库的身份出现在世人面前,它现阶段要做的就是使用的规范来进行开发,并且提供了一套底层实现来填补了各大浏览器暂不支持的,我们称为填充物也就是要干的事情。 书接上回上一篇我们介绍了神马是Polymer,这一篇我们来做些正式编码前的准备工作,顺便也扯一扯Polymer的真面目 如何安装Polymer 有两种方式:第一种是bower安装,不要问我bower是什么,不会bower的话,...
阅读 3707·2023-04-26 00:56
阅读 2685·2021-09-30 10:01
阅读 960·2021-09-22 15:30
阅读 3914·2021-09-07 10:21
阅读 1505·2021-09-02 15:40
阅读 2749·2021-08-30 09:47
阅读 1233·2021-08-16 10:57
阅读 1861·2019-08-30 14:01