最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS動(dòng)態(tài)生成select下拉框的方法實(shí)例

 更新時(shí)間:2019年11月17日 11:37:59   作者:Wang Xiaojiang  
這篇文章主要給大家介紹了關(guān)于AngularJS動(dòng)態(tài)生成select下拉框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用AngularJS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

一、select相關(guān)知識(shí)

<select>
	<option value="0">HTML</option>
 <option value="1">Java</option>
 <option value="2">Python</option>
</select>

其中,value 是存儲(chǔ)到數(shù)據(jù)庫(kù)的值,在此處為0,1,2這些數(shù)值,label 為顯示在頁(yè)面的值,在此處為Html、Java這些字符。

二、ng-options

1.數(shù)組作為數(shù)據(jù)源

  • label for value in array
  • select as label for value in array
  • label group by group for value in array

代碼1(數(shù)組中為字符串)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
 <!--
		這里的label和value需一致,否則會(huì)報(bào)錯(cuò)
		表達(dá)式語(yǔ)法:label for value in array
	-->
	<select ng-model="name" ng-options="name for name in names"></select>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.names = ['baidu', 'Google', 'apple'];
});
</script>
</body>
</html>

最終得到的結(jié)果為:

<select ng-model="name" ng-options="name for name in names" class="ng-pristine ng-valid ng-touched">
 <option value="?" selected="selected"></option>
 <option value="string:baidu" label="baidu">baidu</option>
 <option value="string:Google" label="Google">Google</option>
 <option value="string:apple" label="apple">apple</option>
</select>

需要注意的是,在最后生成的html代碼中option的value 值為String:baidu ,會(huì)在數(shù)組中原有的字符串之前加上其類型的標(biāo)識(shí),這個(gè)通過百度了解到是因?yàn)閍ngularjs版本問題造成,具體未測(cè)試。

代碼2(數(shù)組中為一個(gè)對(duì)象)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
 <!--
		表達(dá)式語(yǔ)法:label for value in array
	-->
	<select ng-model="name" ng-options="c.id for c in coms"></select>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.coms = [
  {'id':'baidu','name':'百度'}, 
  {'id':'Google', 'name':'谷歌'}, 
  {'id':'apple', 'name':'蘋果'}];
});
</script>
</body>
</html>

最終得到的html代碼為:

<!-- 注意:此處ng-model綁定的name變量并非選中項(xiàng)的name屬性,而是選中項(xiàng)的全部屬性
	如選中了索引為0項(xiàng),則name={"id":"baidu","name":"百度"}
	這邊ng-model綁定變量為值為select的value值
-->
<select ng-model="name" ng-options="c.id for c in coms" class="ng-pristine ng-valid ng-touched">
 <option value="?" selected="selected"></option>
 <option value="object:3" label="baidu">baidu</option>
 <option value="object:4" label="Google">Google</option>
 <option value="object:5" label="apple">apple</option>
</select>

通過生成的html代碼,我們可以看到這樣寫會(huì)使得最終的option 的value 值顯示為數(shù)據(jù)類型,而實(shí)際想要得到的結(jié)果是顯示我們選中的值,因此需要寫為:

<!--
	表達(dá)式語(yǔ)法:select as label for value in array
		c.id作為select的value,c.name作為select的label
-->
ng-options="c.id as c.name for c in coms"

其中,c.id 對(duì)應(yīng)value ,c.name 對(duì)應(yīng)label 。生成html代碼為:

<select ng-model="name" ng-options="c.id as c.name for c in coms" class="ng-pristine ng-valid ng-touched">
 <option value="?" selected="selected"></option>
 <option value="string:baidu" label="百度">百度</option>
 <option value="string:Google" label="谷歌">谷歌</option>
 <option value="string:apple" label="蘋果">蘋果</option>
</select>

代碼3(根據(jù)對(duì)象屬性分類)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
 <!--
		表達(dá)式語(yǔ)法:label group by group for value in array
	-->
	<select ng-options="c.name group by c.type for c in coms" ng-model="name" ></select>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.coms = [{'id':'baidu','name':'百度','type':'搜索'}, 
				 {'id':'Google', 'name':'谷歌','type':'搜索'}, 
				 {'id':'apple', 'name':'蘋果','type':'手機(jī)'},
				 {'id':'TaoBao', 'name':'淘寶','type':'購(gòu)物'}
				];
});
</script>
</body>
</html>

得到的html代碼為:

<select ng-options="c.name group by c.type for c in coms" ng-model="name" class="ng-pristine ng-valid ng-touched">
 <optgroup label="搜索">
  <option value="object:3" label="百度" selected="selected">百度</option>
  <option value="object:4" label="谷歌">谷歌</option></optgroup>
 <optgroup label="手機(jī)">
  <option value="object:5" label="蘋果">蘋果</option>
 </optgroup>		
 <optgroup label="購(gòu)物">
  <option value="object:6" label="淘寶">淘寶</option>
 </optgroup>
</select>

注意事項(xiàng)(默認(rèn)選中問題)

通過以上最終得到的HTML代碼可以發(fā)現(xiàn),每次生成的代碼都會(huì)默認(rèn)選中一個(gè)空白的選項(xiàng),如果需要手動(dòng)指定一個(gè)默認(rèn)選中值應(yīng)該怎么設(shè)置?

我們有兩種方式(此處代碼不完整,驗(yàn)證時(shí)請(qǐng)將html部分補(bǔ)充完整):

<!-- 以代碼2中(label for value in array)和(select as label for value in array) 為例-->
<!-- 
	方式一:ng-init屬性
	兩種語(yǔ)法形式在使用ng-init時(shí)有一定區(qū)別,其中第二中寫為了name=coms[0].id是因?yàn)樵趎g-options中通過		select as 為當(dāng)前的select指定了coms[0].id作為value的值;在寫法一種未指定value值,則默認(rèn)為coms中	 的一個(gè)對(duì)象。
-->
<select ng-init="name1=coms[0]" ng-options="c.name for c in coms" ng-model="name1"></select>
<select ng-init="name2=coms[0].id" ng-options="c.id as c.name for c in coms" ng-model="name2"></select>

<!--
	方式二: 在js代碼中為ng-model綁定的變量賦值
-->
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.coms = [{'id':'baidu','name':'百度','type':'搜索'}, 
				 {'id':'Google', 'name':'谷歌','type':'搜索'}, 
				 {'id':'apple', 'name':'蘋果','type':'手機(jī)'},
				 {'id':'TaoBao', 'name':'淘寶','type':'購(gòu)物'}
				];
 // label for value in array
	$scope.name1 = $scope.coms[0];
 
 // select as label for value in array
	$scope.name2 = $scope.coms[0].id;
});
</script>

2.對(duì)象作為數(shù)據(jù)源

  • label for (key, value) in object

代碼展示

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
	{{name4}}
 <!-- 
		表達(dá)式語(yǔ)法:select as label for (key, value) in object
	-->
	<select ng-options="value as key for (key, value) in province" ng-model='name4'></select>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {	
	$scope.province = {
		'北京':'京',
		'山西':'晉',
		'上海':'滬',
	};
});
</script>
</body>
</html>

3.全部語(yǔ)法

for array data sources:

  • label for value in array
  • select as label for value in array
  • label group by group for value in array
  • label disable when disable for value in array
  • label group by group for value in array track by trackexpr
  • label disable when disable for value in array track by trackexpr
  • label for value in array | orderBy:orderexpr track by trackexpr(for including a filter with track by)

for object data sources:

  • label for (key , value) in object
  • select as label for (key ,value) in object
  • label group by group for (key,value) in object
  • label disable when disable for (key, value) in object
  • select as label group by group for(key, value) in object
  • select as label disable when disable for (key, value) in object

三、ng-repeat

代碼示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
	<select>
		<option value="" selected="selected">====請(qǐng)選擇====</option>
		<option ng-repeat="com in coms" value="{{com.name}}">{{com.name}}</option>
	</select>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.coms = [{'id':'baidu','name':'百度','type':'搜索'}, 
				 {'id':'Google', 'name':'谷歌','type':'搜索'}, 
				 {'id':'apple', 'name':'蘋果','type':'手機(jī)'},
				 {'id':'TaoBao', 'name':'淘寶','type':'購(gòu)物'}
				];
});
</script>
</body>
</html>

四、總結(jié)
使用ng-repeat動(dòng)態(tài)生成select比ng-option略微簡(jiǎn)單,但是ng-repeat有一定的局限性,選擇的值只能是一個(gè)字符串,而使用ng-option選擇的值可以是一個(gè)對(duì)象。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 淺談angular4生命周期鉤子

    淺談angular4生命周期鉤子

    本篇文章主要介紹了淺談angularr4生命周期鉤子,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • angular-cli修改端口號(hào)【angular2】

    angular-cli修改端口號(hào)【angular2】

    本篇文章主要介紹了angular2中angular-cli修改端口號(hào)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • Angular-Touch庫(kù)用法示例

    Angular-Touch庫(kù)用法示例

    這篇文章主要介紹了Angular-Touch庫(kù)用法,結(jié)合觸屏滑動(dòng)事件的實(shí)現(xiàn)為例分析了Angular-Touch庫(kù)的相關(guān)使用技巧,需要的朋友可以參考下
    2016-12-12
  • AngularJS實(shí)現(xiàn)表單驗(yàn)證功能詳解

    AngularJS實(shí)現(xiàn)表單驗(yàn)證功能詳解

    這篇文章主要為大家詳細(xì)介紹了AngularJS實(shí)現(xiàn)表單驗(yàn)證功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Angular.JS通過指令操作DOM的方法

    Angular.JS通過指令操作DOM的方法

    這篇文章主要給大家介紹了Angular.JS通過指令操作DOM的方法,文中給出了詳細(xì)的介紹和示例代碼,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Angular2管道Pipe及自定義管道格式數(shù)據(jù)用法實(shí)例分析

    Angular2管道Pipe及自定義管道格式數(shù)據(jù)用法實(shí)例分析

    這篇文章主要介紹了Angular2管道Pipe及自定義管道格式數(shù)據(jù)用法,結(jié)合實(shí)例形式詳細(xì)分析了Angular2管道與純管道相關(guān)概念、語(yǔ)法及使用技巧,需要的朋友可以參考下
    2017-11-11
  • angular分頁(yè)指令操作

    angular分頁(yè)指令操作

    這篇文章主要為大家詳細(xì)介紹了angular分頁(yè)指令操作的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 再談Angular4 臟值檢測(cè)(性能優(yōu)化)

    再談Angular4 臟值檢測(cè)(性能優(yōu)化)

    這篇文章主要介紹了再談Angular4 臟值檢測(cè)(性能優(yōu)化),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對(duì)Scope變量賦值

    AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對(duì)Scope變量賦值

    這篇文章主要介紹了AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對(duì)Scope變量賦值的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-01-01
  • AngularJS  ng-table插件設(shè)置排序

    AngularJS ng-table插件設(shè)置排序

    這篇文章主要介紹了AngularJS ng-table插件設(shè)置排序的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評(píng)論

达州市| 韩城市| 大庆市| 玉环县| 大田县| 安徽省| 滨海县| 双江| 蚌埠市| 龙南县| 高青县| 沿河| 三都| 云梦县| 栖霞市| 大姚县| 南华县| 嘉定区| 忻城县| 泗洪县| 疏勒县| 双桥区| 淮南市| 永平县| 安乡县| 焦作市| 乳源| 咸阳市| 乐都县| 华蓥市| 雷州市| 兴宁市| 井研县| 天等县| 元朗区| 崇仁县| 磐安县| 三明市| 五大连池市| 应城市| 高雄市|