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 学习笔记(十二) dom
Jan 21 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
JavaScript中this详解
Sep 01 Javascript
JavaScript获取当前cpu使用率的方法
Dec 15 Javascript
浅析Node.js实现HTTP文件下载
Aug 05 Javascript
VueJS组件之间通过props交互及验证的方式
Sep 04 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
React中使用UEditor百度富文本的方法
Aug 22 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
javascript面向对象程序设计(一)
2015/01/29 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
租房合同协议书
2014/04/09 职场文书
大学生安全责任书
2014/07/25 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
工作时间证明
2015/06/15 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书