源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-11-14 17:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Omi v1.0.2发布正式支持传递javascript表达式
[b]写在前面[/b] [url=https://github.com/AlloyTeam/omi]Omi框架[/url]可以通过在组件上声明 data-* 把属性传递给子节点。 Omi从设计之初,就是往标准的DOM标签的标准传递方式靠齐。比如: [list] [*]下划线自动转驼峰, data-page-index传到子组件就变成this.data.pageIndex[/*] [*]data-xx 传递到子节点全都变成字符串,如data-page-index="1"到子节点中this.data.pageIndex就是字符串"1"[/*] [/list] 这样会有什么局限性和问题?如: [list] [*]无法传递JSON[/*] [*]无法传递number类型[/*] [*]无法传递bool类型[/*] [/list] 那么支持传递javascript表达式就能解决这些痛点。 废话不多说,来看神器的冒号。 [b]冒号标记[/b] 看下面例子:
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 试试。 [b]传递其他类型[/b] 上面的例子展示了传递JSON,其他类型也支持。比如:
<Hello :data-age="18" />
 <Hello :data-xxx="1+1*2/3" />
 <Hello :data-is-girl="false" />
 <Hello :data-array-test="[1,2,3]" />
[b]复杂类型[/b] 最后给大家看个稍微一丁点复杂的案例:
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");
当然,在子组件中,你也可以不使用 [url=https://github.com/janl/mustache.js]mustache.js模板引擎[/url]的语法去遍历,使用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不包含[url=https://github.com/janl/mustache.js]mustache.js[/url]模板引擎。 以上所述是小编给大家介绍的Omi v1.0.2发布正式支持传递javascript表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部