资讯专栏INFORMATION COLUMN

开坑,写点Polymer 1.0 教程第3篇——组件注册与创建

joywek / 3106人阅读

摘要:我们修改下例子定义借口,构造时将重新赋值测试一下这种构造函数传参的方式只适用于,的创建方式,而且它种方式不支持,原因你自己拍脑袋想想就懂了。

之前一篇算是带大家大致领略了一下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可以让我们在创建自定义组件的时候传入运行时的构造参数,而不是只能死死地使用注册组件时候定义的内容。
我们修改下例子


    
    

测试一下

这种构造函数传参的方式只适用于,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
  
  
    
      
      
    
    
  

HTMLImports.whenReady()这个方法你可以把它理解成JQ里的document.ready()或者AMD里的domReady(),可以确保引用的组件dom都被加载完了再进行下一步的调用,一般都是用在index.html也就是程序的入口处。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86043.html

相关文章

  • 开坑写点Polymer 1.0 教程2(下)——hello world

    摘要:数据绑定是一个非常屌的的办法能让你快速的传播组件的变化,减少代码的行数。你可以用双大括弧来声明你需要绑定的属性,大括弧在运行时会被替换成括弧内的属性值。本篇完,下篇还没想好要写啥。 书接上回,上回叔说到如何注册(创建)一个自定义组件,这回我们来讲讲它的数据绑定。 使用数据绑定 当然,你可能不会仅仅满足上文教的简单的静态自定义组件,你通常需要动态的更新你的dom组件。 数据绑定是一个非常...

    xiangzhihong 评论0 收藏0
  • 开坑写点Polymer 1.0 教程2(上)——hello world

    摘要:书接上回,我们已经把运行的准备工作做好,接下来就敲点代码来感受下它到底是个什么东东,这一篇里我基本会照搬官网的几个例子来快速过一下。非常重要的一点是,这个组件的标签名必须要以符号分割。 书接上回,我们已经把运行Polymer的准备工作做好,接下来就敲点代码来感受下它到底是个什么东东,这一篇里我基本会照搬官网Quick tour的几个例子来快速过一下。 注册一个自定义组件 需要调用Pol...

    HitenDev 评论0 收藏0
  • 开坑写点Polymer 1.0 教程5——事件消息机制

    摘要:而不写,则监听是加在整个组件之上的。组件的输入就是属性赋值,输出则是事件的触发。运行结果消息机制这里来聊聊组件化开发的消息机制,这个并不局限于或者应用,适用于所有的组件式开发技术。 这篇会讲下组件内部的事件处理机制,以及组件和外界通讯的处理方式(父子通讯,兄弟通讯等) 组件内的事件处理机制 第一种,直接写在标签里,用on-eventName=eventHandler的方式 ...

    SHERlocked93 评论0 收藏0
  • 开坑写点Polymer 1.0 教程4——组件的生命周期

    摘要:组件也一样,从被创建,被解析,被赋初始化值,被添加到舞台,被绘制,被布局,使用过程中被修改了值,被重绘,被重新布局,最终被父组件移除结束惨淡的一身等等,都可以称为组件的生命周期。 这篇来谈谈polymer最核心的一块,也可以说是web components技术最最核心的一块内容 生命周期,大家在学习一些框架的时候最好都去了解一下它们的生命周期。 什么是生命周期 什么是生命周期?故名思议...

    Dionysus_go 评论0 收藏0
  • 开坑写点Polymer 1.0 教程1——安装

    摘要:所以又以一个库的身份出现在世人面前,它现阶段要做的就是使用的规范来进行开发,并且提供了一套底层实现来填补了各大浏览器暂不支持的,我们称为填充物也就是要干的事情。 书接上回上一篇我们介绍了神马是Polymer,这一篇我们来做些正式编码前的准备工作,顺便也扯一扯Polymer的真面目 如何安装Polymer 有两种方式:第一种是bower安装,不要问我bower是什么,不会bower的话,...

    Jeff 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<