全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

写在前面

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表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# Omi  # v1.0.2发布  # javascript  # 表达式  # javascript 手机号码正则表达式验证函数  # 比较正宗的验证邮箱的正则表达式js代码详解  # js 常用正则表达式表单验证代码  # 精通JS正则表达式(推荐)  # js各种验证文本框输入格式(正则表达式)  # 遍历  # 给大家  # 你也可以  # 小编  # 的是  # 就能  # 在此  # 下划线  # 可以通过  # 可以直接  # 多说  # 之初  # 所述  # 给我留言  # 感谢大家  # 会有什么  # 看个  # 不包含  # 内就  # 疑问请 


相关文章: 南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站之星后台密码遗忘如何找回?  开心动漫网站制作软件下载,十分开心动画为何停播?  如何在搬瓦工VPS快速搭建网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何快速生成可下载的建站源码工具?  网站制作员失业,怎样查看自己网站的注册者?  如何选择高效可靠的多用户建站源码资源?  如何在云虚拟主机上快速搭建个人网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  建站之星安装需要哪些步骤及注意事项?  如何配置WinSCP新建站点的密钥验证步骤?  TestNG的testng.xml配置文件怎么写  建站主机数据库如何配置才能提升网站性能?  盐城做公司网站,江苏电子版退休证办理流程?  北京网站制作的公司有哪些,北京白云观官方网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  PHP 500报错的快速解决方法  制作网站的模板软件,网站怎么建设?  公司网站制作价格怎么算,公司办个官网需要多少钱?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  建站之星如何一键生成手机站?  建站主机解析:虚拟主机配置与服务器选择指南  如何解决VPS建站LNMP环境配置常见问题?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  小建面朝正北,A点实际方位是否存在偏差?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  建站三合一如何选?哪家性价比更高?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  ,在苏州找工作,上哪个网站比较好?  建站之星如何快速更换网站模板?  建站主机是什么?如何选择适合的建站主机?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作网站的基本流程,设计网站的软件是什么?  制作网站的软件免费下载,免费制作app哪个平台好?  在线教育网站制作平台,山西立德教育官网?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何用腾讯建站主机快速创建免费网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星在线版空间:自助建站+智能模板一键生成方案  c# 服务器GC和工作站GC的区别和设置  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星后台密码如何安全设置与找回?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  企业微网站怎么做,公司网站和公众号有什么区别?  高防服务器:AI智能防御DDoS攻击与数据安全保障  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。