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 相关文章推荐
JS date对象的减法处理实现代码
Dec 28 Javascript
js特殊字符转义介绍
Nov 05 Javascript
js获取IFRAME当前的URL的方法
Nov 13 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
JavaScript保留两位小数的2个自定义函数
May 05 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
AngularJS ng-app 指令实例详解
Jul 30 Javascript
AngularJS ng-change 指令的详解及简单实例
Jul 30 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
webpack 2的react开发配置实例代码
Jul 28 Javascript
vue实现虚拟列表功能的代码
Jul 28 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
Linux下php5.4启动脚本
2014/08/03 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue中引用阿里字体图标的方法
2018/02/10 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
简单了解什么是神经网络
2017/12/23 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
文秘专业自荐信
2013/10/14 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
2015年植树节活动总结
2015/02/06 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis