AngularJs创建省,市,区的3级列表

在AnguarJs中,下拉列表别使用ng-options来实现。

<!DOCTYPE HTML>
<html>

<head>
<meta charset="UTF-8">
<title>angularjs select 三级联动</title>

<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>

<style type="text/css">
label {
padding: 5px 10px;
border: 1px solid #fff;
}

.error {
border-color: #f00;
}
</style>

</head>

<body>

<div ng-controller='cityCtrl'>

省份:
<select ng-model="selected" ng-options="s.name for s in list" ng-change="c()">
<option value="">--请选择--</option>
</select>

<select ng-model="selected2" ng-options="sh.name for sh in selected.child" ng-change="c2()">
<option value="">--请选择--</option>
</select>

<label ng-show="selected2.child.length" ng-class="{error: error.area}">
县级/区域:
<select ng-model="selected3" ng-options="x.value for x in selected2.child" ng-change="c3()" >
<option value="">--请选择--</option>
</select>
</label>
<br /> {{selected.name}} {{selected2.name}} {{selected3.value}}

</div>

<script type="text/javascript">
var app = angular.module('app', []);

app.controller('cityCtrl', ['$scope', '$http', function($scope, $http) {
$scope.error = {};
$scope.list = [];
$http.get('list.json').success(function(data) {
$scope.list = data;
});

$scope.c = function() {

$scope.error.area = false;
$scope.selected2 = "";
$scope.selected3 = "";
};

$scope.c2 = function() {

$scope.error.area = false;
$scope.selected3 = "";
};

$scope.c3 = function() {
$scope.error.area = false;
};

}]);

angular.bootstrap(document, ['app']);</script>

</body>

</html>

新建list.json文件,来保存省,市,区的值,供给控制器调用,在界面上显示。

[
{
"id": 0,
"name": "北京",
"code": "001",
"child": [
{
"id": 0,
"name": "东城区",
"child": []
}, {
"id": 1,
"name": "西城区",
"child": []
}, {
"id": 2,
"name": "崇文区",
"child": []
}, {
"id": 3,
"name": "宣武区",
"child": []
}, {
"id": 4,
"name": "朝阳区",
"child": []
}, {
"id": 5,
"name": "丰台区",
"child": []
}
]
}, {
"id": 1,
"name": "广西",
"code": "002",
"child": [
{
"id": 0,
"name": "南宁",
"child": [
{
"value": "兴宁区"
}, {
"value": "青秀区"
}, {
"value": "江南区"
}, {
"value": "西乡塘区"
}, {
"value": "良庆区"
}, {
"value": "邕宁区"
}, {
"value": "武鸣县"
}, {
"value": "隆安县"
}
]
}, {
"id": 1,
"name": "柳州",
"child": [
{
"value": "城中区"
}, {
"value": "鱼峰区"
}, {
"value": "柳南区"
}, {
"value": "柳北区"
}
]
}, {
"id": 2,
"name": "桂林",
"child": [
{
"value": "秀峰区"
}, {
"value": "叠彩区"
}, {
"value": "象山区"
}
]
}, {
"id": 3,
"name": "百色",
"child": [
{
"value": "右江区"
}, {
"value": "平果县"
}, {
"value": "田阳县"
}, {
"value": "田东县"
}, {
"value": "德保县"
}
]
}
]
}, {
"id": 2,
"name": "广东",
"code": "003",
"child": [
{
"id": 0,
"name": "广州",
"child": [
{
"value": "天河区"
}, {
"value": "白云区"
}, {
"value": "黄埔区"
}
]
}, {
"id": 1,
"name": "深圳",
"child": [
{
"value": "宝安区"
}, {
"value": "南山区"
}, {
"value": "福田区"
}
]
}, {
"id": 2,
"name": "珠海",
"child": []
}
]
}
]

原文地址:https://www.cnblogs.com/JSWBK/p/5611256.html