Omi v1.0.2發(fā)布正式支持傳遞javascript表達式
寫在前面
Omi框架可以通過在組件上聲明 data-* 把屬性傳遞給子節(jié)點。
Omi從設(shè)計之初,就是往標準的DOM標簽的標準傳遞方式靠齊。比如:
- 下劃線自動轉(zhuǎn)駝峰, data-page-index傳到子組件就變成this.data.pageIndex
- data-xx 傳遞到子節(jié)點全都變成字符串,如data-page-index="1"到子節(jié)點中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組件內(nèi)就可以直接使用。
class Hello extends Omi.Component {
render() {
return `
<div>
<h1>{{user.name}} love {{user.favorite}}.</h1>
</div>
`
}
}
你也可以在hello組件內(nèi)打印出 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發(fā)布正式支持傳遞javascript表達式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript設(shè)計模式之觀察者模式(發(fā)布訂閱模式)原理與實現(xiàn)方法示例
這篇文章主要介紹了JavaScript設(shè)計模式之觀察者模式(發(fā)布訂閱模式)原理與實現(xiàn)方法,結(jié)合實例形式分析了JavaScript觀察者模式概念、原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-07-07
javascript排序函數(shù)實現(xiàn)數(shù)字排序
這篇文章主要介紹了javascript排序函數(shù)實現(xiàn)數(shù)字排序的相關(guān)資料,附上示例,需要的朋友可以參考下2015-06-06
JavaScript中通過prototype屬性共享屬性和方法的技巧實例
這篇文章主要介紹了JavaScript中通過prototype屬性共享屬性和方法的技巧實例,本文直接給出一個代碼實例,需要的朋友可以參考下2015-03-03
詳解bootstrap導航欄.nav與.navbar區(qū)別
本篇文章主要介紹了詳解bootstrap導航欄.nav與.navbar區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

