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 相关文章推荐
jquery Firefox3.5中操作select的问题
Jul 10 Javascript
JavaScript 的继承
Oct 01 Javascript
21个值得收藏的Javascript技巧
Feb 04 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
layer弹出层倒计时关闭的实现方法
Sep 27 Javascript
vue总线机制(bus)知识点详解
May 10 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
简单谈谈python中的语句和语法
2017/08/10 Python
python的faker库用法
2019/11/28 Python
django中ImageField的使用详解
2020/12/21 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
存储过程的优点有哪些
2012/09/27 面试题
新媒传信软件测试面试题
2013/02/24 面试题
若干个Java基础面试题
2015/05/19 面试题
自主招生自荐书
2013/11/29 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
pycharm代码删除恢复的方法
2021/06/26 Python
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
LeetCode189轮转数组python示例
2022/08/05 Python