您好,登錄后才能下訂單哦!
這篇文章主要介紹了Omi v1.0.2如何傳遞javascript表達(dá)式,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Omi框架可以通過在組件上聲明 data-* 把屬性傳遞給子節(jié)點。
Omi從設(shè)計之初,就是往標(biāo)準(zhǔn)的DOM標(biāo)簽的標(biāo)準(zhǔn)傳遞方式靠齊。比如:
下劃線自動轉(zhuǎn)駝峰, data-page-index傳到子組件就變成this.data.pageIndex
data-xx 傳遞到子節(jié)點全都變成字符串,如data-page-index="1"到子節(jié)點中this.data.pageIndex就是字符串"1"
這樣會有什么局限性和問題?如:
無法傳遞JSON
無法傳遞number類型
無法傳遞bool類型
那么支持傳遞javascript表達(dá)式就能解決這些痛點。
廢話不多說,來看神器的冒號。
冒號標(biāo)記
看下面例子:
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 表達(dá)式,夠方便吧。
然后在Hello組件內(nèi)就可以直接使用。
class Hello extends Omi.Component { render() { return ` <div> <h2>{{user.name}} love {{user.favorite}}.</h2> </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]" />
復(fù)雜類型
最后給大家看個稍微一丁點復(fù)雜的案例:
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");
當(dāng)然,在子組件中,你也可以不使用 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模板引擎。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Omi v1.0.2如何傳遞javascript表達(dá)式”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。