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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
js中的preventDefault与stopPropagation详解
Jan 29 Javascript
jQuery中(function($){})(jQuery)详解
Jul 15 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
jQuery中使用animate自定义动画的方法
May 29 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
Nov 21 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
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/07/30 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
浅谈dataframe中更改列属性的方法
2018/07/10 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
python中shell执行知识点
2020/05/06 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python 下载文件的几种方法汇总
2021/01/06 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
我的中国梦口号
2014/06/16 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
大学生毕业评语
2014/12/31 职场文书
期末复习计划
2015/01/19 职场文书
初中重阳节活动总结
2015/05/05 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
openstack云计算keystone组件工作介绍
2022/04/20 Servers
Java Spring Lifecycle的使用
2022/05/06 Java/Android
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle