Omi v1.0.2发布正式支持传递javascript表达式


Posted in Javascript onMarch 21, 2017

写在前面

Omi框架可以通过在组件上声明 data-* 把属性传递给子节点。

Omi从设计之初,就是往标准的DOM标签的标准传递方式靠齐。比如:

  • 下划线自动转驼峰, data-page-index传到子组件就变成this.data.pageIndex
  • data-xx 传递到子节点全都变成字符串,如data-page-index="1"到子节点中this.data.pageIndex就是字符串"1"

这样会有什么局限性和问题?如:

  • 无法传递JSON
  • 无法传递number类型
  • 无法传递bool类型

那么支持传递javascript表达式就能解决这些痛点。

废话不多说,来看神器的冒号。

冒号标记

看下面例子:

import Hello from 'hello.js'
Omi.makeHTML('Hello', Hello);
class App extends Omi.Component {
 render() {
 return `
 <div>
 <Hello :data-user="{ name : 'Dntzhang', favorite : 'Omi' }" />
 </div>
 `
 }
}
Omi.render(new App(),"#container")

在data-user前面加上冒号即:data-user,就代表传递的是js 表达式,够方便吧。

然后在Hello组件内就可以直接使用。

class Hello extends Omi.Component {
 render() {
 return `
 <div>
 <h1>{{user.name}} love {{user.favorite}}.</h1>
 </div>
 `
 }
}

你也可以在hello组件内打印出 this.data.user 试试。

传递其他类型

上面的例子展示了传递JSON,其他类型也支持。比如:

<Hello :data-age="18" />
 <Hello :data-xxx="1+1*2/3" />
 <Hello :data-is-girl="false" />
 <Hello :data-array-test="[1,2,3]" />

复杂类型

最后给大家看个稍微一丁点复杂的案例:

class Hello extends Omi.Component {
 handleClick(evt){
 alert( this.data.arrayTest[0].name)
 }
 render() {
 return `
 <ul>
 {{#arrayTest}}
 <li onclick="handleClick">{{name}}</li>
 {{/arrayTest}}
 </ul>
 `;
 }
}
Omi.makeHTML('Hello', Hello);
class App extends Omi.Component {
 render() {
 return `
 <div>
 <Hello :data-array-test="[{name:'dntzhang'},{name:'omi'},{name:'AlloyTeam'}]" />
 </div>
 `;
 }
}
Omi.render(new App(),"#container");

当然,在子组件中,你也可以不使用 mustache.js模板引擎的语法去遍历,使用ES6+的姿势去遍历。

class Hello extends Omi.Component {
 render() {
 return `
 <ul>
 ${this.data.arrayTest.map(item =>
 `<li>${item.name}</li>`
 ).join('')}
 </ul>
 `;
 }
}

这也是为什么omi提供了两个版本,omi.js和omi.lite.js的原因。omi.lite.js不包含mustache.js模板引擎。

以上所述是小编给大家介绍的Omi v1.0.2发布正式支持传递javascript表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
Feb 04 Javascript
jQuery实现元素的插入
Feb 27 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 #jQuery
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 #jQuery
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 #jQuery
80%应聘者都不及格的JS面试题
Mar 21 #Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 #jQuery
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 #Javascript
JavaScript 中 apply 、call 的详解
Mar 21 #Javascript
You might like
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
微笑服务标语
2014/06/24 职场文书
测绘工程专业求职信
2014/07/15 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
技术股份合作协议书
2014/10/05 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
销售会议开幕词
2016/03/04 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Github 使用python对copilot做些简单使用测试
2022/04/14 Python