Angularjs自定义指令之省市区三级联动

前端之家收集整理的这篇文章主要介绍了Angularjs自定义指令之省市区三级联动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

先上图


代码

<!DOCTYPE html>
<html lang="zh-CN" ng-app="myApp">
<head>
<Meta charset="utf-8">
<Meta http-equiv="X-UA-Compatible" content="IE=edge">
<Meta name="viewport" content="width=device-width,initial-scale=1">
<script src="jQuery.min.js"></script>
<script src="angular.js"></script>
<script src="bootstrap.min.js"></script>
<link rel="stylesheet" href="bootstrap.min.css">
<style type="text/css">
select {
width : 116px;
}
.selectLocation select {
display: block;
float: left;
margin-bottom: 2px;
}
</style>
<script type="text/JavaScript">
var myApp = angular.module('myApp',[]);
myApp.controller('Ctrl',['$scope','utilsService',function($scope,utilsService){
$scope.location = '';
$scope.$watch('location',function(newValue) {
console.log(newValue)
console.log(utilsService.isEmptyObj(newValue))
})

// if (isEmptyObj($scope.location)) {
// //error
// }
}]);

myApp.factory("utilsService",function() {
return {
isEmptyObj : function(obj) {
var flag = true;
for(var i in obj) {
if (obj[i] != '') {
flag = false;
break;
}
}
return flag;
}
}
})

myApp.directive("custLocation",['$http',function($http) {
return {
restrict: 'A',
scope: {
ngModel : '='
},
templateUrl: 'tmpl.html',
link: function(scope,elem,attrs) {
scope.country = '';
scope.province = '';
scope.city = '';
scope.detailAddress = '';

$http.get("location.json").success(function(data) {
scope.countryList = data.country;
});

scope.$watch('detailAddress',function(newValue) {
// console.log(scope.country.name + scope.province.name + scope.city + newValue)
scope.ngModel = {
"country" : scope.country == null || scope.country == '' ? '' : scope.country.name,
"province" : scope.province == null || scope.province == '' ? '' : scope.province.name,
"city" : scope.city || '',
"detailAddress" : newValue
};
});

scope.changeCountry = function() {
if (scope.country == null) {
scope.country = '';
scope.province = '';
scope.city = '';
scope.detailAddress = '';
scope.ngModel = '';
} else {
scope.ngModel = {
"country" : scope.country.name,
"detailAddress" : scope.detailAddress
};
}
}

scope.changeProvince = function () {
scope.ngModel = {
"country" : scope.country.name,
"detailAddress" : scope.detailAddress
};
}

scope.changeCity = function() {
scope.ngModel = {
"country" : scope.country.name,
"detailAddress" : scope.detailAddress
};
}
}
};
}]);
</script>
</head>
<body ng-controller="Ctrl">
<div cust-location ng-model="location"></div>
</body>
</html>


tmpl.html

<div class="selectLocation"> <div> <select class="btn btn-info btn-sm" ng-change="changeCountry()" ng-model="country" ng-options="C.name for C in countryList"> <option value="">国家</option> </select> </div> <div> <select class="btn btn-info btn-sm" ng-change="changeProvince()" ng-model="province" ng-options="p.name for p in country.province"> <option value="">省份/直轄市</option> </select> </div> <div> <select class="btn btn-info btn-sm" ng-change="changeCity()" ng-model="city" ng-options="c for c in province.city"> <option value="">市</option> </select> </div> <div style="width:348px;"> <input type="text" class="form-control" ng-model="detailAddress" placeholder="详细地址" ng-disabled="country=='' || country==null" /> </div> </div>

原文链接:https://www.f2er.com/angularjs/148680.html

猜你在找的Angularjs相关文章