javascript - angular.js 中的雙花括號(hào){{}}問題
問題描述
<p ng-controller='listCtrl'> <h1>這是列表頁面</h1> <ul><li ng-repeat='item in myList'><a href='http://www.b3g6.com/wenda/13666.html#/myDetail/{{$index}}'>{{item}}</a></li><li ng-repeat='item in myList'><button ng-click='jump(’/myDetail/’+$index)'>{{item}}</button></li> </ul></p>
如題,如上的代碼中,我需要取到$index值作為參數(shù),在第一個(gè)li中需要加{{}}才能取到值,而第二個(gè)li中不需要加;這個(gè)該如何區(qū)分??
問題解答
回答1:在原生html里面為了解析數(shù)據(jù),需要使用{{}}來綁定數(shù)據(jù),而ng的命令后面沒有這需要。
回答2:{{ $var }}包裹的模板變量,當(dāng)需要直接輸出變量值,而無需額外解析(如過濾器處理、作為指令參數(shù)、作為函數(shù)參數(shù))時(shí)使用,反之,ng-click='jump(’/myDetail/’+ $index)' 是在指令中調(diào)用的參數(shù)。
回答3:簡(jiǎn)單的判定標(biāo)準(zhǔn)就是
如果當(dāng)前屬性所賦值的類型為字面量類型,比如html模板中的屬性,或者指令中以@為修飾符的屬性,那么賦值的時(shí)候如果不加雙花括號(hào),均是按字面量來算的,想要按變量的方式解析,就需要加雙花括號(hào)。
如果當(dāng)前屬性所賦值的類型是非字符串類型,比如angular模板中的各種內(nèi)置指令,或者指令中以<、=、&修飾的屬性,那么賦值的時(shí)候會(huì)按js的語法規(guī)則進(jìn)行解析,這種情況就不需要加花括號(hào)了。
回答4:先說明下Angular中的兩種類型:
模板:格式為{{...}},實(shí)質(zhì)是字符串,會(huì)被解析引擎展開成可以識(shí)別的字符串文本表達(dá)式:可以直接運(yùn)行的代碼,和JS寫法基本一致,只是省略了所有的this。
然后你可以參照一下上下文,確定你現(xiàn)在是在寫類似JS的部分,還是在寫一個(gè)字符串文本,這樣就容易判斷你是需要模板還是表達(dá)式了。
相關(guān)文章:
1. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?2. docker-compose中volumes的問題3. golang - 用IDE看docker源碼時(shí)的小問題4. docker-machine添加一個(gè)已有的docker主機(jī)問題5. docker不顯示端口映射呢?6. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!7. docker容器呢SSH為什么連不通呢?8. javascript - 最近用echarts做統(tǒng)計(jì)圖時(shí)遇到兩個(gè)問題!!9. docker內(nèi)創(chuàng)建jenkins訪問另一個(gè)容器下的服務(wù)器問題10. mac里的docker如何命令行開啟呢?

網(wǎng)公網(wǎng)安備