摘要:我們修改下例子定義借口,構(gòu)造時(shí)將重新賦值測(cè)試一下這種構(gòu)造函數(shù)傳參的方式只適用于,的創(chuàng)建方式,而且它種方式不支持,原因你自己拍腦袋想想就懂了。
之前一篇算是帶大家大致領(lǐng)略了一下Polymer的風(fēng)采。這篇我們稍微深入一丟丟,講下組件的注冊(cè)和創(chuàng)建。
創(chuàng)建自定義組件的幾種方式這里我們使用Polymer函數(shù)注冊(cè)了一個(gè)自定義組件"my-element"
// register an element Polymer({ is: "my-element", created: function() { this.textContent = "My element!"; } });
在hello world篇中我們使用的是直接在html頁(yè)面里寫標(biāo)簽的方式來(lái)創(chuàng)建這個(gè)自定義組件
但是如果my-element需要被動(dòng)態(tài)創(chuàng)建,使用上面的方式顯然就滿足不了要求。所以Polymer提供了另外2種創(chuàng)建方式
第一種
var element = document.createElement("my-element");
啊,我們可以調(diào)用原生dom api一樣來(lái)創(chuàng)建自定義組件了,這是一件多么讓人愉悅的事情。
我們來(lái)測(cè)試一下
第二種
這種方式需要我們?cè)谧?cè)自定義組件的時(shí)候進(jìn)行一點(diǎn)小的改動(dòng),調(diào)用Polymer函數(shù)定義的時(shí)候把返回值賦個(gè)一個(gè)全局變量MyElement
// register an element MyElement = Polymer({ is: "my-element", created: function() { this.textContent = "My element!"; } });
var el2 = new MyElement();
從這里可以得知Polymer函數(shù)會(huì)返回一個(gè)自定義組件的構(gòu)造函數(shù),使用new就可以創(chuàng)建它了。
我們來(lái)測(cè)試一下
對(duì)于這種方法,Polymer還提供了一個(gè)接口factoryImpl可以讓我們?cè)趧?chuàng)建自定義組件的時(shí)候傳入運(yùn)行時(shí)的構(gòu)造參數(shù),而不是只能死死地使用注冊(cè)組件時(shí)候定義的內(nèi)容。
我們修改下例子
{{helloMessage}}
測(cè)試一下
這種構(gòu)造函數(shù)傳參的方式只適用于,new CustomElement的創(chuàng)建方式,而且它2種方式不支持,原因你自己拍腦袋想想就懂了。
factoryImpl 被調(diào)用的時(shí)機(jī)是在dom被創(chuàng)建,默認(rèn)值被設(shè)置了以后,具體的我們會(huì)在生命周期篇里談。
擴(kuò)展原生的html標(biāo)簽首先告訴大家一個(gè)非常遺憾的消息,Polymer當(dāng)前版本暫不支持?jǐn)U展自己定義組件(既自己不能擴(kuò)展自己,但是會(huì)在以后版本中支持大家請(qǐng)擦干凈鼻涕靜靜等待),目前只能擴(kuò)展原生的html標(biāo)簽如input, button等。Polymer提供了一個(gè)extends接口來(lái)實(shí)現(xiàn)擴(kuò)展
my-input.html
如果使用的是dom api我們需要這樣來(lái)創(chuàng)建
var el1 = document.createElement("input", "my-input")
如果使用html標(biāo)簽的方式,我們要這樣寫
竊以為,后面2種方式來(lái)創(chuàng)建一個(gè)組件是非常非常扯蛋的一件事情,使用者必須非常清楚組件的繼承關(guān)系,你說這還不扯蛋么?期望Polymer在后續(xù)版本的api中對(duì)于組件擴(kuò)展這一塊內(nèi)容,消滅以上兩種不靠譜的創(chuàng)建方式。
在html主文件里定義“自定義組件首先說下,只有在寫demo的時(shí)候,才會(huì)用到這種寫法。生產(chǎn)環(huán)境中,都是需要把組件寫在各自獨(dú)立的文件中。
Defining a Polymer Element from the Main Document Hi! I"m a Polymer element that was defined in the main document!
HTMLImports.whenReady()這個(gè)方法你可以把它理解成JQ里的document.ready()或者AMD里的domReady(),可以確保引用的組件dom都被加載完了再進(jìn)行下一步的調(diào)用,一般都是用在index.html也就是程序的入口處。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86043.html
摘要:數(shù)據(jù)綁定是一個(gè)非常屌的的辦法能讓你快速的傳播組件的變化,減少代碼的行數(shù)。你可以用雙大括弧來(lái)聲明你需要綁定的屬性,大括弧在運(yùn)行時(shí)會(huì)被替換成括弧內(nèi)的屬性值。本篇完,下篇還沒想好要寫啥。 書接上回,上回叔說到如何注冊(cè)(創(chuàng)建)一個(gè)自定義組件,這回我們來(lái)講講它的數(shù)據(jù)綁定。 使用數(shù)據(jù)綁定 當(dāng)然,你可能不會(huì)僅僅滿足上文教的簡(jiǎn)單的靜態(tài)自定義組件,你通常需要?jiǎng)討B(tài)的更新你的dom組件。 數(shù)據(jù)綁定是一個(gè)非常...
摘要:書接上回,我們已經(jīng)把運(yùn)行的準(zhǔn)備工作做好,接下來(lái)就敲點(diǎn)代碼來(lái)感受下它到底是個(gè)什么東東,這一篇里我基本會(huì)照搬官網(wǎng)的幾個(gè)例子來(lái)快速過一下。非常重要的一點(diǎn)是,這個(gè)組件的標(biāo)簽名必須要以符號(hào)分割。 書接上回,我們已經(jīng)把運(yùn)行Polymer的準(zhǔn)備工作做好,接下來(lái)就敲點(diǎn)代碼來(lái)感受下它到底是個(gè)什么東東,這一篇里我基本會(huì)照搬官網(wǎng)Quick tour的幾個(gè)例子來(lái)快速過一下。 注冊(cè)一個(gè)自定義組件 需要調(diào)用Pol...
摘要:而不寫,則監(jiān)聽是加在整個(gè)組件之上的。組件的輸入就是屬性賦值,輸出則是事件的觸發(fā)。運(yùn)行結(jié)果消息機(jī)制這里來(lái)聊聊組件化開發(fā)的消息機(jī)制,這個(gè)并不局限于或者應(yīng)用,適用于所有的組件式開發(fā)技術(shù)。 這篇會(huì)講下組件內(nèi)部的事件處理機(jī)制,以及組件和外界通訊的處理方式(父子通訊,兄弟通訊等) 組件內(nèi)的事件處理機(jī)制 第一種,直接寫在標(biāo)簽里,用on-eventName=eventHandler的方式 ...
摘要:組件也一樣,從被創(chuàng)建,被解析,被賦初始化值,被添加到舞臺(tái),被繪制,被布局,使用過程中被修改了值,被重繪,被重新布局,最終被父組件移除結(jié)束慘淡的一身等等,都可以稱為組件的生命周期。 這篇來(lái)談?wù)刾olymer最核心的一塊,也可以說是web components技術(shù)最最核心的一塊內(nèi)容 生命周期,大家在學(xué)習(xí)一些框架的時(shí)候最好都去了解一下它們的生命周期。 什么是生命周期 什么是生命周期?故名思議...
摘要:所以又以一個(gè)庫(kù)的身份出現(xiàn)在世人面前,它現(xiàn)階段要做的就是使用的規(guī)范來(lái)進(jìn)行開發(fā),并且提供了一套底層實(shí)現(xiàn)來(lái)填補(bǔ)了各大瀏覽器暫不支持的,我們稱為填充物也就是要干的事情。 書接上回上一篇我們介紹了神馬是Polymer,這一篇我們來(lái)做些正式編碼前的準(zhǔn)備工作,順便也扯一扯Polymer的真面目 如何安裝Polymer 有兩種方式:第一種是bower安裝,不要問我bower是什么,不會(huì)bower的話,...
閱讀 3717·2023-04-26 00:56
閱讀 2706·2021-09-30 10:01
閱讀 974·2021-09-22 15:30
閱讀 3934·2021-09-07 10:21
閱讀 1541·2021-09-02 15:40
閱讀 2774·2021-08-30 09:47
閱讀 1256·2021-08-16 10:57
閱讀 1874·2019-08-30 14:01