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实现运行代码需要刷新的解决方法
Aug 18 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
js获取class的所有元素
Mar 28 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
May 04 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
JQuery标签页效果实例详解
Dec 24 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
jquery拖动改变div大小
Jul 04 jQuery
AngularJS中table表格基本操作示例
Oct 10 Javascript
js中的数组对象排序分析
Dec 11 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
Yii框架where查询用法实例分析
2019/10/22 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js 操作符汇总
2014/11/08 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
vue跨域解决方法
2017/10/15 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python基本语法经典教程
2016/03/11 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python conda操作方法
2019/09/11 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
电气技术员岗位职责
2013/11/19 职场文书
结婚典礼证婚词
2014/01/08 职场文书
房屋买卖协议书
2014/04/10 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers
Python pyecharts绘制条形图详解
2022/04/02 Python