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 相关文章推荐
List the Codec Files on a Computer
Jun 18 Javascript
javascript iframe编程相关代码
Dec 28 Javascript
jquery validate使用攻略 第四步
Jul 01 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
仿猪八戒网左下角的文字滚动效果
Oct 28 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
简单的JS轮播图代码
Jul 18 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
Jan 09 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 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中使用模板的方法
2008/05/24 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
smarty模板数学运算示例
2016/12/11 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
php xhprof使用实例详解
2019/04/15 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
JS中数组重排序方法
2016/11/11 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
Python with的用法
2014/08/22 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python中的Numpy矩阵操作
2018/08/12 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
python plotly画柱状图代码实例
2019/12/13 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
Python中pass的作用与使用教程
2020/11/13 Python
如何用python写个模板引擎
2021/01/14 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
大学生的四年学习自我评价
2013/12/13 职场文书
道歉情书大全
2015/05/12 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
改造DE1103三步曲
2022/04/07 无线电