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 相关文章推荐
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
jquery 可排列的表实现代码
Nov 13 Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
jQuery实现流动虚线框的方法
Jan 29 Javascript
AngularJs 常用的过滤器
May 15 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
Javascript实现秒表倒计时功能
Nov 17 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 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 编写的日历
2006/10/09 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
Vue渲染函数详解
2017/09/15 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
使用python Django做网页
2013/11/04 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python正则表达式使用经典实例
2016/06/21 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python requests上传文件实现步骤
2020/09/15 Python
python操作链表的示例代码
2020/09/27 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
职工运动会邀请函
2014/02/02 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
捐资助学倡议书
2014/04/15 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
2014年会计工作总结
2014/11/27 职场文书
员工工作表现自我评价
2015/03/06 职场文书
项目验收申请报告
2015/05/15 职场文书
学习雷锋主题班会
2015/08/14 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python