Omi v1.0.2發(fā)布正式支持傳遞javascript表達(dá)式
寫在前面
Omi框架可以通過在組件上聲明 data-* 把屬性傳遞給子節(jié)點(diǎn)。
Omi從設(shè)計(jì)之初,就是往標(biāo)準(zhǔn)的DOM標(biāo)簽的標(biāo)準(zhǔn)傳遞方式靠齊。比如:
- 下劃線自動(dòng)轉(zhuǎn)駝峰, data-page-index傳到子組件就變成this.data.pageIndex
- data-xx 傳遞到子節(jié)點(diǎn)全都變成字符串,如data-page-index="1"到子節(jié)點(diǎn)中this.data.pageIndex就是字符串"1"
這樣會(huì)有什么局限性和問題?如:
- 無(wú)法傳遞JSON
- 無(wú)法傳遞number類型
- 無(wú)法傳遞bool類型
那么支持傳遞javascript表達(dá)式就能解決這些痛點(diǎn)。
廢話不多說,來看神器的冒號(hào)。
冒號(hào)標(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前面加上冒號(hào)即:data-user,就代表傳遞的是js 表達(dá)式,夠方便吧。
然后在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]" />
復(fù)雜類型
最后給大家看個(gè)稍微一丁點(diǎn)復(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模板引擎的語(yǔ)法去遍歷,使用ES6+的姿勢(shì)去遍歷。
class Hello extends Omi.Component { render() { return ` <ul> ${this.data.arrayTest.map(item => `<li>${item.name}</li>` ).join('')} </ul> `; } }
這也是為什么omi提供了兩個(gè)版本,omi.js和omi.lite.js的原因。omi.lite.js不包含mustache.js模板引擎。
以上所述是小編給大家介紹的Omi v1.0.2發(fā)布正式支持傳遞javascript表達(dá)式,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Javascript實(shí)現(xiàn)真實(shí)字符串剩余字?jǐn)?shù)提示的實(shí)例代碼
這篇文章介紹了Javascript實(shí)現(xiàn)真實(shí)字符串剩余字?jǐn)?shù)提示的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10JavaScript中關(guān)于class的調(diào)用方法
下面小編就為大家?guī)硪黄琂avaScript中關(guān)于class的調(diào)用方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-11-11獲取DOM對(duì)象的幾種擴(kuò)展及簡(jiǎn)寫
獲取DOM對(duì)象的幾種擴(kuò)展及簡(jiǎn)寫...2006-10-10JavaScript中常見的數(shù)據(jù)類型判斷方法小結(jié)
在?JS?編程中,正確判斷數(shù)據(jù)類型是必備技能,也是面試常問的內(nèi),本文將探討四種常用的數(shù)據(jù)類型判斷方法,通過了解它們的特點(diǎn)和適用范圍,能夠更好地處理不同數(shù)據(jù)類型的情況,避免出現(xiàn)錯(cuò)誤和提升代碼質(zhì)量,需要的朋友可以參考下2023-06-06JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能
FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件內(nèi)容,使用 File或 Blob對(duì)象指定要讀取的文件或數(shù)據(jù)。下面通過本文給大家分享JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能,需要的朋友參考下吧2017-09-09arrayToJson將數(shù)組轉(zhuǎn)化為json格式的js代碼
arrayToJson將數(shù)組轉(zhuǎn)化為json格式的js代碼,需要的朋友可以參考下。2010-10-10