Angularjs自定义指令实现三级联动 选择地理位置


Posted in Javascript onFebruary 13, 2017

Angularjs自定义指令实现三级联动效果,先上图

Angularjs自定义指令实现三级联动 选择地理位置

Angularjs自定义指令实现三级联动 选择地理位置

Angularjs自定义指令实现三级联动 选择地理位置

代码

<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" rel="external nofollow" >
 <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,
     "province" : scope.province == null || scope.province == '' ? '' : scope.province.name,
     "city" : scope.city || '',
     "detailAddress" : scope.detailAddress
    };
    }
   }

   scope.changeProvince = function () {
    scope.ngModel = {
    "country" : scope.country.name,
    "province" : scope.province == null || scope.province == '' ? '' : scope.province.name,
    "city" : scope.city || '',
    "detailAddress" : scope.detailAddress
    };
   }

   scope.changeCity = function() {
    scope.ngModel = {
    "country" : scope.country.name,
    "province" : scope.province == null || scope.province == '' ? '' : scope.province.name,
    "city" : scope.city || '',
    "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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
JavaScript Array扩展实现代码
Oct 14 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
Jquery 自定义动画概述及示例
Mar 29 Javascript
JS Loading功能的简单实现
Nov 29 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
node.js中的fs.lchmodSync方法使用说明
Dec 16 Javascript
Angularjs基础知识及示例汇总
Jan 22 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 #Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 #Javascript
Vue.js实现简单动态数据处理
Feb 13 #Javascript
JavaScript获取select中text值的方法
Feb 13 #Javascript
详谈$.data()的用法和作用
Feb 13 #Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 #Javascript
JavaScript实现公历转农历功能示例
Feb 13 #Javascript
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
php中看实例学正则表达式
2006/12/25 PHP
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
Bootstrap精简教程
2015/11/27 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
Python自动登录126邮箱的方法
2015/07/10 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
python简单实现9宫格图片实例
2020/09/03 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
环境建设实施方案
2014/03/14 职场文书
婚前协议书范本
2014/04/15 职场文书
高一学生评语大全
2014/04/25 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
高中美术教学反思
2016/02/17 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
Golang中interface{}转为数组的操作
2021/04/30 Golang
MySQL 分页查询的优化技巧
2021/05/12 MySQL