AngularJS实现多级下拉框


Posted in Javascript onMarch 25, 2022

本文实例为大家分享了AngularJS实现多级下拉框的具体代码,供大家参考,具体内容如下

<div ng-app="MultiDropDownApp" ng-controller="MultiDropDownControl as vm">
    <label>选择地址:</label>
    <!--ng-options加载所有选择项,ng-model记录当前选择项-->
    <select ng-model="vm.province" ng-options="x.name for x in vm.provinceSort"
            ng-change="vm.selectProvince()" id="" value="" class="form-control width-25">
        <option value="">请选择</option>

    </select>
    <label>—</label>
    <select ng-model="vm.city" ng-options="x.name for x in vm.citySort"
            id="" value="" class="form-control width-25">
        <option value="">请选择</option>

    </select>
</div>
<script src="~/Scripts/angular.min.js"></script>
<script>
    var app = angular.module('MultiDropDownApp', []);
    //可以添加上自己注入的服务
    app.controller('MultiDropDownControl', ['$scope', '$http',
        function ($scope, $http) {
            var vm = this;
            vm.provinceSort = [];
            vm.citySort = [];

            //选择省级单位,初始化市级数据   二级联动
            vm.selectProvince = function () {
                var fatherID = vm.province.id;
                vm.citySort = [];
                $http({
                    method: 'POST',
                    url: '/AngularjsStudy/GetChildrenSort',
                    data: { fatherID: fatherID }
                }).then(function successCallback(data) {
                    vm.citySort = data.data;
                }, function errorCallback(response) {
                    // 请求失败执行代码
                });
            }

            //初始化页面
            function init() {
                //省
                $http({
                    method: 'POST',
                    url: '/AngularjsStudy/GetProvinceSort',
                    data: {}
                }).then(function successCallback(data) {
                    //加载下拉框数据
                    vm.provinceSort = data.data;
                    //设置默认选项
                    vm.province = vm.provinceSort[0];
                }, function errorCallback(response) {
                    // 请求失败执行代码
                });
            }

            //初始化
            init();
        }])
</script>

Controller

public ActionResult GetProvinceSort()
        {
            List<District> districts = new List<District>();
            districts.Add(new District() {id=1,fatherID=0,name="湖南省" });
            districts.Add(new District() { id =2, fatherID = 0, name = "湖北省" });
            districts.Add(new District() { id =3, fatherID = 0, name = "四川省" });
            return Json(districts);
        }

        public ActionResult GetChildrenSort(int fatherID)
        {
            List<District> districts = new List<District>();
            switch (fatherID)
            {
                case 1:
                    districts.Add(new District() { id = 4, fatherID = 1, name = "长沙市" });
                    districts.Add(new District() { id = 5, fatherID = 1, name = "岳阳市" });
                    districts.Add(new District() { id = 6, fatherID = 1, name = "株洲市" });
                    return Json(districts);
                case 2:
                    districts.Add(new District() { id = 7, fatherID = 2, name = "武汉市" });
                    districts.Add(new District() { id = 8, fatherID = 2, name = "宜昌市" });
                    return Json(districts);
                case 3:
                    districts.Add(new District() { id = 9, fatherID = 3, name = "成都市" });
                    districts.Add(new District() { id = 10, fatherID = 3, name = "遂宁市" });
                    districts.Add(new District() { id = 11, fatherID = 3, name = "巴中市" });
                    districts.Add(new District() { id = 12, fatherID = 3, name = "绵阳市" });
                    districts.Add(new District() { id = 13, fatherID = 3, name = "南充市" });
                    return Json(districts);
                default:
                    districts.Add(new District() { id = 14, fatherID = -1, name = "不知道你选了什么∑q|゚Д゚|p" });
                    return Json(districts);
            }
        }

Model

public class District
{
    public int id { get; set; }
    /// <summary>
    /// 根节点FatherID=0
    /// </summary>
    public int fatherID { get; set; }
    public string name { get; set; }
}

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

Javascript 相关文章推荐
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
Apr 17 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
Jun 02 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
jquery Ajax 全局调用封装实例详解
Jan 16 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
JavaScript实现两个数组的交集
Mar 25 #Javascript
angular4实现带搜索的下拉框
使用Canvas绘制一个游戏人物属性图
【js设计模式】SOLID五大设计原则
什么是SOLID
Vue3中toRef与toRefs的区别
Mar 24 #Vue.js
Javascript的promise,async和await的区别详解
Mar 24 #Javascript
You might like
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
解析php中curl_multi的应用
2013/07/17 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
JS实现放烟花效果
2020/03/10 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
python fabric实现远程操作和部署示例
2014/03/25 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
详解Python3定时器任务代码
2019/09/23 Python
python的sys.path模块路径添加方式
2020/03/09 Python
比驿:全球酒店比价网
2018/06/20 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
接口可以包含哪些成员
2012/09/30 面试题
linux面试相关问题
2012/08/11 面试题
小学生家长评语集锦
2014/01/30 职场文书
五型班组建设方案
2014/02/10 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
事业单位考察材料范文
2014/12/25 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS