angular 的 二级联动(forEach实战)

在下才疏学浅,不足之处,还望多多指教。

直接上代码

<!DOCTYPE html>
<html lang="en" ng-app="indexApp">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/angular.js"></script>
    <style>
        select{
            width:150px;
            vertical-align:middle;
        }
        p{
            display: inline-block;
            cursor: pointer;
        }
    </style>
</head>
<body ng-controller="indexCtrl">
<select ng-change="changeOne(oneData,first)" ng-model="oneData">
    <option ng-repeat="item in first" value="{{item.id}}">{{item.name}}</option>
</select>

<select ng-change="changeTwo()" ng-model="twoData" multiple="multiple" size="10">
    <option ng-repeat="item in next" value="{{item.id}}">{{item.name}}</option>
</select>

<p>
    <span ng-click="addLast(twoData,next)">-></span><br>
    <span ng-click="delLast(lastData,last)"><-</span>
</p>

<select ng-model="lastData" size="10" multiple="multiple">
    <option ng-repeat="item in last track by $index" value="{{item.id}}">{{item.name}}</option>
</select>

<script>
    angular.module(‘indexApp‘,[])
            .controller(‘indexCtrl‘,function($scope){
                $scope.first =[
                    {
                        id:1,
                        name:‘前端‘,
                        child:[
                            {id:1,name:‘CSS3‘},
                            {id:2,name:‘HTML‘},
                            {id:3,name:‘js‘},
                            {id:4,name:‘angular‘},
                            {id:5,name:‘bootstrap‘}
                        ]
                    },
                    {
                        id:2,
                        name:‘后端‘,
                        child:[
                            {id:6,name:‘java‘},
                            {id:7,name:‘php‘},
                            {id:8,name:‘node‘}
                        ]
                    }
                ];

                $scope.changeOne = function(oneData,first){
                    angular.forEach(first,function(i,j){
                        if(oneData == i.id){
                            $scope.next = i.child;
                        }
                    })
                };

                var boxLast=[];

                $scope.addLast = function(twoData,next){
                    //添加
                    next.forEach(function(i,j){
                        if(parseInt(twoData) == parseInt(i.id)){
                            boxLast.push(i)
                        }
                    });
                    //排重
                    var a ={},b=[],c=[];
                    for(var i =0;i<boxLast.length;i++){
                        if( !a [boxLast[i].id] ){
                            a [boxLast[i].id]=true;
                            b.push(boxLast[i]);
                        }else{
                            c.push(boxLast[i].name);
                        }
                    }
                    if(c.length>0){
                        alert(c+‘已添加‘);
                    }
                    boxLast = b;
                    $scope.last = b;

                };

                $scope.delLast = function(lastData,last){
                    last.forEach(function(i,j){
                        if(parseInt(lastData) == parseInt(i.id)){
                            $scope.last.splice(j,1); //删除从 左往右的 第n个 数组内容,删除一个
                        }
                    })
                };
            });

</script>
</body>
</html>

执行效果如下:

页面比较简陋,但足以说明问题。

我们需要注意的有以下几点:

1. angular.forEach的使用(可以看下在下对forEach的拙见)

2. arr[10].splice(5,1)  意思是:删除数组的第五个元素

时间: 2024-10-18 02:11:59

angular 的 二级联动(forEach实战)的相关文章

Spring MVC中Ajax实现二级联动

今天写项目遇到了二级联动,期间遇到点问题,写个博客记录一下. 后台Controller: @RequestMapping("/faultType") @ResponseBody public Map<String,Object> faultType(int id,HttpServletRequest request)throws IOException { String ReturnMessage = ""; //获取所有子类故障类型 List<F

二级联动非ajax实现

二级联动非ajax实现,改改就能用. html部分代码 : <tr> <td colspan="2"> <select name="fatherTopicId" class="select" id="fatherTopicId" style=''> <option value="" selected="selected">— <?ph

Ajax实现的城市二级联动二

上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染 1.HTML <select id="province"> <option>请选择</option> </select> <select id="city"> <option>请选择</option> </select> 2.JS /* * 省份信息和城市信息全部来源于服务器端 * * 第一

ajax实现二级联动

用js实现简单的ajax二级联动(如上图) HTML代码: 1 省份:<select id="province" onchange="getCity();" > 2 <option>请选择--</option> 3 </select> 4 城市:<select id="city"> 5 <option>请选择--</option> 6 </select>

二级联动列表

<!DOCTYPE HTML><html><head><title>二级联动列表</title><meta charset="utf-8" /><style> .hide{ display: none; }</style><script> /*实现“省”和“市”的级联下拉列表*/ var cities=[[], /*0号下标没有元素*/[{"name":'东城

JS实现省市二级联动

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF

Query实例的ajax应用之二级联动的后台是采用php来做的

jQuery实例的ajax应用之二级联动的后台是采用php来做的,前台通过jquery的ajax方式实现二级联动数据库表设计 csj_trade id int(11) auto_increment          tname varchar(100)tradeType int(11) 其中,id为主键自动索引,tname为行业名称,tradeType为一个标识,为0时,表示这条数据是大类:不为0,而是某个数字的时候,则这个数字表示其父级的id.(1)主页面 <script type="t

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

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

jQuery二级联动

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>二级联动</title> <script src="js/jquery-1.7.1.js"></script> <style> </style> <script type="