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 相关文章推荐
从sohu弄下来的flash中展示图片的代码
Apr 27 Javascript
Jquery实现自定义窗口随意的拖拽
Mar 12 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
jQuery实现定位滚动条位置
Aug 05 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
vue-cli3+typescript新建一个项目的思路分析
Aug 06 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 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
上海无线电三厂简史修改版
2021/03/01 无线电
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
javascript 播放器 控制
2007/01/22 Javascript
超清晰的document对象详解
2007/02/27 Javascript
JS Array对象入门分析
2008/10/30 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
javascript 闭包详解
2015/07/02 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
采购部部长岗位职责
2014/02/06 职场文书
校本教研活动总结
2014/07/01 职场文书
学前教育专业求职信
2014/09/02 职场文书
自我查摆剖析材料
2014/10/11 职场文书
小学优秀班主任材料
2014/12/17 职场文书
干部个人考察材料
2014/12/24 职场文书
春风化雨观后感
2015/06/11 职场文书
收入证明怎么写
2015/06/12 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL