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 jqPlot API 中文使用教程(非常强大的图表工具)
Aug 15 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
js实现上一页下一页的效果【附代码】
Mar 10 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
JavaScript学习笔记整理_setTimeout的应用
Sep 19 Javascript
JS获取短信验证码倒计时的实现代码
May 22 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
vue子路由跳转实现tab选项卡
Jul 24 Javascript
JavaScript实现雪花飘落效果
Dec 27 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
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python实现低通滤波器代码
2020/02/26 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
python爬虫如何解决图片验证码
2021/02/14 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
冬季施工防火方案
2014/05/17 职场文书
建筑横幅标语
2014/10/09 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
奖励通知
2015/04/22 职场文书
如何用python反转图片,视频
2021/04/24 Python