AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能示例【可對(duì)選項(xiàng)實(shí)現(xiàn)增刪】
本文實(shí)例講述了AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能。分享給大家供大家參考,具體如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>m.fzitv.net 省市二級(jí)聯(lián)動(dòng)</title>
</head>
<style>
*{
margin:0;
padding:0;
}
.ul{
list-style:none;
display:inline-block;
}
.selectOption ul li{
display:inline-block;
width:50px;
padding:5px;
}
ul li:hover{
background-color:#59C0F3;
color:#fff;
cursor:pointer;
}
.container{
display:inline-block;
}
dl{
display: inline-block;
}
dl dt{
display: inline-block;
}
.container{
position:relative;
text-align: left;
vertical-align:top;
}
.selectBoder{
width:150px;
height:20px;
margin:0 auto;
margin-bottom:5px;
cursor:pointer;
border:1px solid #808080;
padding:2px 5px;
font-size:14px;
}
.selectBoder:hover{
border-color:#59C0F3;
}
.selectOption:before{
width: 0;
height: 0;
border-bottom: 50px solid #ffffff;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
.selectOption{
font-size:14px;
position:absolute;
background-color: #ffffff;
z-index:9999;
border:1px solid #eee;
width:360px;
padding:3px 5px;
box-shadow: 5px 5px 10px #888888;
}
.button{
width:30px;
height:30px;
display: inline-block;
background-color:#59C0F3;
text-align:center;
line-height: 25px;
cursor:pointer;
font-size:24px;
color:#fff;
margin:0 5px;
border-radius:30px;
}
.button:hover{
background-color:#12bb16;
}
</style>
<body ng-app="myApp" ng-controller="myControl">
<div class="inline" ng-repeat = "option in options">
<div class="container">
<dl>
<dd class="selectBoder" ng-click="choseP($index)" ng-value="false">{{option.province}}</dd>
<dt class="selectOption" ng-if="option.ifShowProvince" ng-mouseleave="leaveProvince(option)">
<ul>
<li ng-repeat = " x in province" ng-value="x.value" ng-click="choseProvince($event.target,option)" data-name="{{x.name}}">{{x.name}}</li>
</ul>
</dt>
</dl>
</div>
<div class="container">
<dl>
<dd class="selectBoder" ng-click="choseC($index)" ng-value="false">{{option.city}}</dd>
<dt class="selectOption" ng-if="option.ifShowCity" ng-mouseleave="leaveCity(option)">
<ul>
<li ng-repeat = "y in option.cities" ng-value="y.value" ng-click="choseCity($event.target,option)" data-name="{{y.name}}">{{y.name}}</li>
</ul>
</dt>
</dl>
</div>
<span class="button" ng-click="addChose($index)">+</span>
<span class="button" ng-click="deleteChose($index)">-</span>
</div>
</div>
</body>
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../js/angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('myApp',[]);
app.controller('myControl',function($scope){
$scope.ifShowCity = false;
$scope.ifShowProvince = false;
$scope.options =[{index:"0",ifShowCity:false,ifShowProvince:false,province:"",city:"",cities:""}];
$scope.leaveProvince = function(option){
$.each($scope.options,function(index,item){
if(option == $scope.options[index]){
$scope.optionIndex = index;
}
})
$scope.options[$scope.optionIndex].ifShowProvince = false;
}
$scope.leaveCity = function(option){
$.each($scope.options,function(index,item){
if(option == $scope.options[index]){
$scope.optionIndex = index;
}
})
$scope.options[$scope.optionIndex].ifShowCity = false;
}
$scope.choseProvince = function(target,option){
$.each($scope.options,function(index,item){
if(option == $scope.options[index]){
$scope.optionIndex = index;
}
})
$scope.options[$scope.optionIndex].ifShowProvince = false;
$scope.options[$scope.optionIndex].province = target.getAttribute("data-name");
$.each($scope.province,function(index,item){
if(item.value == target.getAttribute("value")){
$scope.options[$scope.optionIndex].cities = item.children;
}
}
)
}
$scope.choseCity = function(target,option){
$.each($scope.options,function(index,item){
if(option == $scope.options[index]){
$scope.optionIndex = index;
}
})
$scope.options[$scope.optionIndex].ifShowCity = false;
$scope.options[$scope.optionIndex].city = target.getAttribute("data-name");
}
function getPrarms(){
return $scope.options;
}
$scope.sub = function(){
getPrarms();
}
$scope.province =
[{
name: "湖北省",
value: "01",
children: [{
name: "武漢",
value: "0101"
}, {
name: "黃岡",
value: "0102"
}, {
name: "荊州",
value: "0103"
}, {
name: "十堰",
value: "0104"
}, {
name: "黃石",
value: "0105"
}, {
name: "鄂州",
value: "0106"
}, {
name: "咸寧市",
value: "0107"
}, {
name: "襄陽(yáng)市",
value: "0108"
}
]
},{
name: "廣東省",
value: "02",
children: [{
name: "廣東",
value: "0201"
}, {
name: "深圳",
value: "0202"
}, {
name: "佛山",
value: "0203"
}, {
name: "惠州",
value: "0204"
}, {
name: "東莞",
value: "0205"
}]
},{
name: "河北省",
value: "03",
children: [{
name: "北京",
value: "0301"
}, {
name: "邯鄲",
value: "0302"
}, {
name: "邢臺(tái)",
value: "0303"
}, {
name: "保定",
value: "0304"
}, {
name: "秦皇島",
value: "0305"
}
]}
]
$scope.choseP = function($index){
$scope.options[$index].ifShowProvince = !$scope.options[$index].ifShowProvince;
$scope.options[$index].ifShowCity = false;
}
$scope.choseC = function($index){
$scope.options[$index].ifShowCity = !$scope.options[$index].ifShowCity;
$scope.options[$index].ifShowProvince = false;
}
$scope.addChose = function($index){
if($scope.options.length < 10){
$scope.options.splice($scope.options.length,0,{ //從最后面添加內(nèi)容
index:$scope.options.length,ifShowCity:false,ifShowProvince:false
});
$scope.canDelete = true;
}else{
$scope.canAdd = false;
}
}
$scope.deleteChose = function($index){
if($scope.options.length >1){
$scope.options.splice($index,1); //從當(dāng)前行刪除。
}
if($index == 1){
$scope.canDelete = false;
}
}
});
</script>
</html>
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門(mén)與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解Angular之constructor和ngOnInit差異及適用場(chǎng)景
這篇文章主要介紹了詳解Angular之constructor和ngOnInit差異及適用場(chǎng)景的相關(guān)資料,有興趣的可以了解一下2017-06-06
AngularJs用戶登錄問(wèn)題處理(交互及驗(yàn)證、阻止FQ處理)
這篇文章主要為大家詳細(xì)介紹了AngularJs用戶登錄問(wèn)題處理,包括交互及驗(yàn)證、阻止FQ處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Angular 2 利用Router事件和Title實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面標(biāo)題的方法
本篇文章主要介紹了Angular 2 利用Router事件和Title實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面標(biāo)題的方法,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
ionic4+angular7+cordova上傳圖片功能的實(shí)例代碼
ionic是一個(gè)垮平臺(tái)開(kāi)發(fā)框架,可通過(guò)web技術(shù)開(kāi)發(fā)出多平臺(tái)的應(yīng)用。這篇文章主要介紹了ionic4+angular7+cordova上傳圖片功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-06-06
Angular開(kāi)發(fā)者指南之入門(mén)介紹
本篇文章主要介紹了Angular開(kāi)發(fā)者指南的入門(mén)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
在angularJs中進(jìn)行數(shù)據(jù)遍歷的2種方法
今天小編就為大家分享一篇在angularJs中進(jìn)行數(shù)據(jù)遍歷的2種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
AngularJS過(guò)濾器filter用法總結(jié)
這篇文章主要介紹了AngularJS過(guò)濾器filter用法,結(jié)合實(shí)例形式較為詳細(xì)的總結(jié)分析了過(guò)濾器filter的功能、分類、使用技巧及自定義過(guò)濾器的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-12-12
Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法
這篇文章主要介紹了Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法,涉及AngularJS針對(duì)重復(fù)數(shù)據(jù)的遍歷與過(guò)濾技巧,需要的朋友可以參考下2016-08-08

