angular 实现无限极联动下拉

在项目中有个2层的联动下拉的效果,百度了一下,发现都是在页面上写死了几个select 来实现的,在一些数据结构不一样的时候 就会玩不转了。比如切换到另一个的时候 它下面已经没有下一层结构的时候, 后面多出的select就多余了,而且在不知道多少层结构的时候,在页面中写死几个select 就完全不靠谱了。所以 只能是根据层级来创建select 。于是,下面的代码就这样产生了!
html:

1 <body ng-app=‘app‘>
2     <div ng-controller=‘demo‘>
3     <h2>{{head}}</h2>
4     <select select-more-mune ng-options="c.title for c in data" ng-model=‘C0‘>
5     <option value="">-- chose color --</option>
6     </select>
7 </div>

script:

 1 var app = angular.module(‘app‘,[]);
 2
 3         app.directive(‘selectMoreMune‘, [‘$compile‘, function($compile){
 4                 return {
 5                     restrict:‘A‘,
 6                     link:function(scope, iElement, iAttrs){
 7                         var watch =  iAttrs.ngModel;
 8                         var $e = $(iElement[0]);
 9                         scope.$watch(watch, function(newVal, oldVal){
10                             if(newVal === oldVal){return;}
11                             $e.nextAll().remove();
12                             if(scope[watch] && angular.isArray(scope[watch].citys)){
13                                 var arr = [];
14                                 var index = $e.siblings().length+1;
15                                 scope[‘d‘+index] = scope[watch].citys;
16                                 arr.push("<select select-more-mune ng-model=‘C"+index+"‘ ng-options=‘c.title for c in d"+index+"‘>");
17                                 arr.push(‘<option value="">-- chose color --</option>‘);
18                                 arr.push(‘</select>‘);
19                                 var newNode = $compile(arr.join(‘‘))(scope);
20                                 $e.after(newNode);
21                             }
22                         });
23                     }
24                 }
25         }]);
26
27         app.controller(‘demo‘,[‘$scope‘,  function($scope, $compile){
28             $scope.head = ‘联动测试‘;
29
30             $scope.data = [
31                 {title:‘省1111‘,
32                  citys:[
33                      {title:‘市1111‘},
34                      {title:‘市2222‘,citys:[{title:‘222县1111‘},{title:‘444县2222‘}]},
35                      {title:‘市33333‘,citys:[{title:‘333县1111‘}]}
36                  ]
37                 },
38                 {title:‘省22222‘,
39                  citys:[
40                      {title:‘市4444‘,citys:[{title:‘44县1111‘}]},
41                      {title:‘市55555‘,citys:[{title:‘222县1111‘},{title:‘22县2222‘}]},
42                      {title:‘市666666‘,citys:[{title:‘县1111‘}]}
43                  ]
44                 },
45                 {title:‘省33333‘,
46                  citys:[
47                      {title:‘市7777‘,citys:[{title:‘县1111‘}]},
48                      {title:‘市88888‘,citys:[{title:‘县1111‘},{title:‘县2222‘}]},
49                      {title:‘市9999‘,citys:[{title:‘县1111‘}]}
50                  ]
51                 }
52             ];
53         }]);
时间: 2024-08-06 16:06:10

angular 实现无限极联动下拉的相关文章

地址联动下拉框实现

<head> <meta charset="UTF-8"> <title>地址联动下拉框实现</title> <link rel="stylesheet" type="text/css" href="reset.css"> <link rel="stylesheet" type="text/css" href="

SharePoint 2013 使用查阅项实现联动下拉框

SharePoint列表使用中,经常会用到下拉框,而有些特殊的需求,会用到联动的下拉框,在SharePoint中默认没有这样的字段,所以如果实现,我们需要自己想办法. 这里,我们介绍如何使用JQuery+JavaScript客户端对象模型实现,下面让我简单介绍下实现的全过程. 1.创建基础列表CityList,保存的是城市名称,使用默认字段Title: 2.列表CityList的所有栏,我把Title字段的名称改为了City Name,如下图: 3.创建基础列表AreaList,用于保存所有区和

(实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单

二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动.本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果. 先看下效果 大类:  前端技术   程序开发   数据库   小类: 实现的效果就是当选择大类时,小类下拉框里的选项内容也随着改变.实现原理:根据大类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的小类,并返回JSON数据给前端处理. XHTML 首先我们要建立两个下拉选择框,第一个是大类

用jsp实现省市区三级联动下拉

jsp+jquery实现省市区三级联动下拉 不少系统都需要实现省市区三级联动下拉,像人口信息管理.电子商务网站.会员管理等,都需要填写地址相关信息.而用ajax实现的无刷新省市区三级联动下拉则可以改善用户体验,目前基本上所有网站都是采用这一种方式.现在ajax的使用已经不像最初那样使用最原始的方法了,因为有很多的js框架供我们选择,我们只需要调用它们的一个方法就可以实现ajax功能,而其他的则交给js组件去完成. 最近整理了一份最新的全国省市区县数据库,再加上之前还没有在jsp中实现过省市区三级

jQuery cxSelect 多级联动下拉菜单

随着电商热门,这种多层次的互动更充分地体现在下拉菜单,最明显的是多级联动地址下拉选择,因此,这里是一个简单的分享 jQuery cxSelect 多级联动下拉菜单 cxSelect 它是基于 jQuery 多级联动菜单插件.它适用于各省.动菜单. 列表数据通过 AJAX 获取(须要在server环境执行),也能够使用变量自己定义,数据内容使用 JSON 格式. 提供国内省市县数据(数据来源:basecss/cityData Date: 2014.03.31) 个人一直都有习惯,当有新知识点须要学

基于jQuery美化联动下拉选择框

今天给大家介绍一款基于jQuery美化联动下拉选择框.这款下下拉选择框js里自带了全国所有城市的数数库.下拉选择框适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="container"> <div class="inner"> <section id="main_content"

jquery+ligerform三级联动下拉框

如下为ligerform里的三级联动下拉框: var formData=[ {display:"县区",name:"QY",newline:true,labelWidth:100,width:220,space:50,type:"select",group:"区域信息",groupicon:"@Url.Content("~/Content/icons/32X32/communication.gif"

JS年月日三级联动下拉框日期选择代码

原博客网址: http://www.cnblogs.com/gdcgy/p/5467742.html 由于工作中涉及到生日编辑资料编辑,年月日用上面网址案例:bug提示: 编辑生日栏的[年]或者[月],之前保存的具体的[日]就不显示啦,产品说不管编辑哪个数据,其他数据不变: 然后自己改了一下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

联动下拉菜单

<!doctype html><html><head><meta charset="utf-8"><title>联动下拉菜单</title><script>window.onload = function(){    var s1 = new Sel('div1');    s1.add('0',['1','2','3']);        s1.add('0_0',['1_1','1_2','1_3'