微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐