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 相关文章推荐
JS无限树状列表实现代码
Jan 11 Javascript
javascript工具库代码
Mar 29 Javascript
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
详解node+express+ejs+bootstrap构建项目
Sep 27 Javascript
基于webpack 实用配置方法总结
Sep 28 Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JS 树形递归实例代码
2010/05/18 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python实现局域网内实时通信代码
2019/12/22 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
德国团购网站:Groupon德国
2018/03/13 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
毕业生自我鉴定实例
2014/01/21 职场文书
运动会广播稿30字
2014/01/21 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
公司人事管理制度
2015/08/05 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
创业计划书之面包店
2019/09/12 职场文书
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python