ng-select ng-options

最近一段時(shí)間的項(xiàng)目中遇到了很多的關(guān)于下拉框的場(chǎng)景,當(dāng)時(shí)只是模仿原有的項(xiàng)目代碼,并沒有深入的理解,為此寫此博客將該問題深入進(jìn)行理解。

主要是對(duì)ng-options的學(xué)習(xí)

下面現(xiàn)將ng-options的幾個(gè)典型的用法列出來
在<select>指令中ng-model 與 ng-options 配合使用

ngOption針對(duì)不同類型的數(shù)據(jù)源有不同的用法,主要體現(xiàn)在數(shù)組和對(duì)象上,因?yàn)槲覀冎饕褂脭?shù)組,所以下面主要講數(shù)組。

label for value in array
這是最簡(jiǎn)單的一個(gè)只是簡(jiǎn)單的將數(shù)組中對(duì)象的lable屬性顯示出來,ng-model的值還是value。

select as label for value in array
這種寫法中涉及到as的使用,當(dāng)前的顯示還依然是lable的值,但是ng-model的值已經(jīng)發(fā)生了改變,成為了select中的值

label group by group for value in array
這種寫法涉及到group for的使用當(dāng)前的顯示還是lable,但回按照group分組,ng-model的值為value

label for value in array track by trackexpr
這條指令涉及到track by 的使用用于唯一確定數(shù)組中的迭代項(xiàng)的表達(dá)式,當(dāng)lable相同時(shí),指定唯一的value值與ng-model綁定

當(dāng)數(shù)據(jù)源為對(duì)象時(shí)
label for ( key , value ) in object
為大概使用模式,就是將value改為 ( key , value )如下形式,ng-model默認(rèn)綁定model

在學(xué)習(xí)上面幾種寫法時(shí),發(fā)現(xiàn)track by 的使用不太好理解,用官網(wǎng)上的例子說明一下。
This will work:

<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>
$scope.selected = $scope.items[0];

but this will not work:

<select ng-options="item.subItem as item.label for item in items track by item.id" ng-model="selected"></select>
$scope.selected = $scope.items[0].subItem;

第一個(gè)你可以通過ng-model來唯一確定數(shù)組中的迭代項(xiàng),items[0]里面包含item.id
第二個(gè)你會(huì)發(fā)現(xiàn)items[0].subItem不能確定item.id

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容