JS的框架Polymer中的dom-if和is属性使用说明


Posted in Javascript onJuly 29, 2015

我们经常会有根据某个属性的取值来觉得模板渲染的需求,那就是最基本的分支语句。Angular 中有 ng-if 可以用,那么 Polymer 中当然也有 dom-if。其实 dom-if 是个很简单的东西,它只是作为本篇话题的接入点,我想介绍的实际上是 is 这个属性。

dom-if 和之前介绍过的 dom-repeat 一样,都是通过 is 属性在 tempalte 元素上使用的,比如下面这个例子就是两个模板根据一个绑定才控件上的布尔值来决定谁该被渲染
运行

<script> var Polymer = { dom: 'shadow' }; </script>
<base href="http://www.web-tinker.com/share/" />
<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 属性来指定的到底是什么呢?其实和 Angular 是一样的,它们都是 Directive 的概念,只是 Polymer 不称它为 Directive 而已。我们完全可以自己造一个这样的东西出来,比如下面例子我们给 div 元素添加一个 is="demo-test" 的东西
运行

<script> var Polymer = { dom: 'shadow' }; </script>
<base href="http://www.web-tinker.com/share/" />
<link rel="import" href="polymer/polymer.html" />

<script>
 Polymer({
  is: 'demo-test',
  extends: 'div', <!-- 关键就在这里
  ready: function(e) {
   this.innerHTML = '我是一个 demo-test';
  }
 });
</script>

<div is="demo-test"></div>

在定义时通过 extends 指定一个标签名即可得到一个 is 指令。上面例子是一个最简单的用法,我们可以自己创建 Shadow DOM 做自己想做的事了。实际上 Polymer 内置的 dom-repeat 和 dom-if 以及其他 dom-* 也都是如此定义的。但是这东西细看起来是非常复杂的,而我的文章只是入门级的东西,如果想知道更具体的用法就应该去看源码(连官方文档我也没找到在哪儿定义)。

Javascript 相关文章推荐
JavaScript对象链式操作代码(jquery)
Jul 04 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
Aug 14 Javascript
深入理解Node.js的HTTP模块
Oct 12 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
JS实现颜色动态淡化效果
Mar 06 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
微信小程序自定义波浪组件使用方法详解
Sep 21 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 Javascript
js数组去重的方法汇总
Jul 29 #Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 #Javascript
JavaScript中的cacheStorage使用详解
Jul 29 #Javascript
JavaScript中数组继承的简单示例
Jul 29 #Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 #Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 #Javascript
浅谈Javascript数组的使用
Jul 29 #Javascript
You might like
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
Python 实现域名解析为ip的方法
2019/02/14 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
通过实例解析Python return运行原理
2020/03/04 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
司机职责范本
2014/03/08 职场文书
培训协议书范本
2014/04/22 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers