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