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 相关文章推荐
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
在JavaScript中操作时间之getMonth()方法的使用
Jun 10 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
js如何获取网页所有图片
May 12 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 Javascript
微信小程序轮播图swiper代码详解
Dec 01 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读取html并截取字符串的简单代码
2009/11/30 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
pandas的qcut()方法详解
2019/07/06 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
《故都的秋》教学反思
2014/04/15 职场文书
大学专科自荐信
2014/06/17 职场文书
护理目标管理责任书
2014/07/25 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers