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实现检测指定目录是否存在的方法
Jan 12 Javascript
JavaScript 学习笔记(十五)
Jan 28 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
浅谈js闭包理解
Apr 01 Javascript
jquery实现动态创建form并提交的方法示例
May 27 jQuery
详解element-ui 表单校验 Rules 配置 常用黑科技
Jul 11 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
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python脚本监控docker容器
2016/04/27 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python用户管理系统
2018/03/13 Python
Python之用户输入的实例
2018/06/22 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
物业管理个人自我评价
2013/11/08 职场文书
个性发展自我评价
2014/02/11 职场文书
服务行业口号
2014/06/11 职场文书
销售竞赛活动方案
2014/08/23 职场文书
投标售后服务承诺书
2015/04/29 职场文书
现实表现证明材料
2015/06/19 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Python3.10的一些新特性原理分析
2021/09/15 Python