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 相关文章推荐
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
node.js中的fs.utimesSync方法使用说明
Dec 15 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
js逆向解密之网络爬虫
May 30 Javascript
vue实现PC端分辨率适配操作
Aug 03 Javascript
基于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 adodb介绍
2009/03/19 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
一些.net面试题
2014/10/06 面试题
我为自己代言广告词
2014/03/18 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
婚前协议书怎么写
2014/04/15 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年度考核工作总结
2014/12/24 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers