Angularjs 学习总结 -- 实现省市的三级联动

前端之家收集整理的这篇文章主要介绍了Angularjs 学习总结 -- 实现省市的三级联动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、前言

最近在NG项目做界面中,需要实现一个省市区的三级联动,这个东西拿到手,想想是很简单的,网上有大量关于

的三级联动JS或者JQuery代码实现,但其实大部分实现的有点复杂,也不适于移植到NG的前端项目,本文章介绍NG的实现方式,一如既然的简单暴力。


二、实现

1、准备工作,三级联动的省市级数据,我们就不需要存在数据库了,数据量也只才几十K而已,我们直接使用前端的json文件吧,简单暴力。

网上有很多解析好的json格式文件,但数据结构得有规定,这里我把我准备的json文件放进附件,取名为city.json(目录js/prod/data/city.json

2、OK,数据源有了,那么我们就直接上代码吧:

JS控制器:

//地址编辑模态框的Controller
app.controller('editAddrCtrl',['$scope','$modalInstance','$http',function($scope,$modalInstance,$http){
$http.get('static/js/prod/data/city.json').success(function(data) {
$scope.division = data;
}).error(function(e) {
toaster.pop('error','系统错误 ' + '加载城市信息失败');
});

$scope.cancel = function() {
$modalInstance.dismiss();
};
}]);

HTML:

<form name="myForm" class="form-horizontal" role="form" ng-submit="save(address)" style="min-height: 253px;">

<div class="form-group ">
<label for="area" class="col-md-3 col-sm-4 control-label"><strong
class="text-inverse">* </strong>所在地区:</label>
<div class="row checkBox">
<div class="col-md-3">
<select class="form-control"
ng-model="address.province"
ng-options="key as key for (key,value) in division"
ng-change="address.city='';address.district='';">
<option value="">省</option>
</select>
</div>
<div class="col-md-3 ">
<select class="form-control" ng-model="address.city"
ng-options="key as key for (key,value) in division[address.province]"
ng-change="address.district='';">
<option value="">市</option>
</select>
</div>
<div class="col-md-3">
<select class="form-control" ng-model="address.district"
ng-options="value as value for value in division[address.province][address.city]" required>
<option value="">区</option>
</select>
</div>
</div>
</div>

</form>

代码分析一下:js代码非常简单,直接用$http拿到了json的数据,放进division里面;关键在HTML代码的写法,

<select class="form-control"
ng-model="address.province"
ng-options="key as key for (key,value) in division"
ng-change="address.city='';address.district='';">
<option value="">省</option>
</select>

这里用了两个关键指令,ng-options和ng-change,ng-options是拿到数据,写法是根据json的数据结构(key,value的三层Map数据),使用过Map<String,String>数据就知道,第一层数据是省份,ng-options和Html 的options类似,展示选择项,ng-change是格式化省下下面的城市和区、

我粘贴的是省,所有一但改变省份,address.city='';address.district='',城市和区都赋值空。


总结:这个实现是不是非常简单,加起来才几句代码。有两个重点:第一:json数据源数据格式必须是我们key,valeu形式的三级数组;第二、使用NG的两个强大指令。

city.json附件无法上传,大家网上找一个吧

猜你在找的Angularjs相关文章