JS的框架Polymer中的dom-if和is屬性使用說(shuō)明
我們經(jīng)常會(huì)有根據(jù)某個(gè)屬性的取值來(lái)覺(jué)得模板渲染的需求,那就是最基本的分支語(yǔ)句。Angular 中有 ng-if 可以用,那么 Polymer 中當(dāng)然也有 dom-if。其實(shí) dom-if 是個(gè)很簡(jiǎn)單的東西,它只是作為本篇話題的接入點(diǎn),我想介紹的實(shí)際上是 is 這個(gè)屬性。
dom-if 和之前介紹過(guò)的 dom-repeat 一樣,都是通過(guò) is 屬性在 tempalte 元素上使用的,比如下面這個(gè)例子就是兩個(gè)模板根據(jù)一個(gè)綁定才控件上的布爾值來(lái)決定誰(shuí)該被渲染
運(yùn)行
<script> var Polymer = { dom: 'shadow' }; </script> <base /> <link rel="import" href="polymer/polymer.html" /> <dom-module id="demo-test"> <template> <input type="checkbox" checked="{{checked::change}}"> <template is="dom-if" if="[[checked]]">true</template> <template is="dom-if" if="[[!checked]]">false</template> </template> <script> Polymer({ properties: { checked: { value: false } }, is: 'demo-test' }); </script> </dom-module> <demo-test></demo-test>
無(wú)論是 dom-if 還是之前的 dom-repeat,這些 is 屬性來(lái)指定的到底是什么呢?其實(shí)和 Angular 是一樣的,它們都是 Directive 的概念,只是 Polymer 不稱(chēng)它為 Directive 而已。我們完全可以自己造一個(gè)這樣的東西出來(lái),比如下面例子我們給 div 元素添加一個(gè) is="demo-test" 的東西
運(yùn)行
<script> var Polymer = { dom: 'shadow' }; </script> <base /> <link rel="import" href="polymer/polymer.html" /> <script> Polymer({ is: 'demo-test', extends: 'div', <!-- 關(guān)鍵就在這里 ready: function(e) { this.innerHTML = '我是一個(gè) demo-test'; } }); </script> <div is="demo-test"></div>
在定義時(shí)通過(guò) extends 指定一個(gè)標(biāo)簽名即可得到一個(gè) is 指令。上面例子是一個(gè)最簡(jiǎn)單的用法,我們可以自己創(chuàng)建 Shadow DOM 做自己想做的事了。實(shí)際上 Polymer 內(nèi)置的 dom-repeat 和 dom-if 以及其他 dom-* 也都是如此定義的。但是這東西細(xì)看起來(lái)是非常復(fù)雜的,而我的文章只是入門(mén)級(jí)的東西,如果想知道更具體的用法就應(yīng)該去看源碼(連官方文檔我也沒(méi)找到在哪兒定義)。
相關(guān)文章
Three.js源碼閱讀筆記(Object3D類(lèi))
Object3D似乎是Three.js框架中最重要的類(lèi),相當(dāng)一部分其他的類(lèi)都是繼承自O(shè)bject3D類(lèi),比如場(chǎng)景類(lèi)、幾何形體類(lèi)、相機(jī)類(lèi)、光照類(lèi)等等:他們都是3D空間中的對(duì)象,所以稱(chēng)為Object3D類(lèi),需要了解的朋友可以參考下2012-12-12JavaScript基礎(chǔ)語(yǔ)法、dom操作樹(shù)及document對(duì)象
本文介紹了學(xué)習(xí)javascript重要的3個(gè)內(nèi)容基礎(chǔ)語(yǔ)法、dom操作樹(shù)及document對(duì)象,小伙伴們一定要弄明白才行2014-12-12JavaScript之?dāng)?shù)組(Array)詳解
這篇文章主要介紹了JavaScript之?dāng)?shù)組(Array)詳解,本文詳細(xì)講解了JavaScript數(shù)組的創(chuàng)建、檢測(cè)數(shù)組、轉(zhuǎn)化方法、棧方法、隊(duì)列方法、重排序方法、操作方法、位置方法等內(nèi)容,需要的朋友可以參考下2015-04-04Javascript Boolean、Nnumber、String 強(qiáng)制類(lèi)型轉(zhuǎn)換的區(qū)別詳細(xì)介紹
我們知道 Boolean(value) 是把值轉(zhuǎn)換成Boolean類(lèi)型,Nnumber(value) 是把值轉(zhuǎn)換成數(shù)字(整型或浮點(diǎn)數(shù)),而 String(value) 是把值轉(zhuǎn)換成字符串,需要的朋友可以了解下2012-12-12Ext JS 4官方文檔之三 -- 類(lèi)體系概述與實(shí)踐
Ext JS 4從底層對(duì)類(lèi)體系進(jìn)行了重構(gòu),這是Ext JS歷史上的第一次對(duì)類(lèi)體系的巨大重構(gòu),需要的朋友可以參考下2012-12-12javaScript 事件綁定、事件冒泡、事件捕獲和事件執(zhí)行順序整理總結(jié)
這篇文章主要介紹了javaScript 事件綁定、事件冒泡、事件捕獲和事件執(zhí)行順序整理總結(jié)的相關(guān)資料,需要的朋友可以參考下2016-10-10