AngularJS实现多级下拉框

本文实例为大家分享了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; }
}

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

(0)

相关推荐

  • AngularJS中下拉框的基本用法示例

    本文实例讲述了AngularJS中下拉框的基本用法.分享给大家供大家参考,具体如下: HTML正文: <div ng-app="myApp" ng-controller="myCtrl"> <select ng-model="selectedName" ng-options="x for x in names"></select> 等价于: <select> <option

  • Angularjs实现下拉框联动的示例代码

    第一种联动方式,在网上看到的,感觉对于我的使用性不高,比较后端不会提供这种json... 实现截图 html <select ng-model="s1" ng-options="selectData.name for selectData in selectDatas"> <option value="">--产品类目--</option> </select> <select ng-model

  • angularjs下拉框空白的解决办法

    搜索angularjs下拉框空白,可以出现很多解决方案,但是对于静态字段来说,网上目前还没有找到解决方案,如下: <select class="form-control" ng-model="UserState" ng-init="UserState=0"> <option value="-1">选择状态</option> <option value="0">

  • angularJs-$http实现百度搜索时的动态下拉框示例

    实例如下所示: <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ overflow: hidden; margin-top: 50px; margin-left: 500px; } .con

  • AngularJS动态生成select下拉框的方法实例

    一.select相关知识 <select> <option value="0">HTML</option> <option value="1">Java</option> <option value="2">Python</option> </select> 其中,value 是存储到数据库的值,在此处为0,1,2这些数值,label 为显示在页面的值

  • angularjs 动态从后台获取下拉框的值方法

    angularjs 动态从后台获取下拉框的值,只要是使用repeat指令,后台提供的是一个list的对象,里面包含value和显示的值,如下: js文件: //职务等级和档次/军衔等级和档次,需要从后台获取:poslist,type:2/3/4/5 $scope.getDyActivityInforItems=function(){ serviceData.getData('inforinput/getAllSelectValueByType','POST',{ type:2 }).then(f

  • angularjs 实现带查找筛选功能的select下拉框实例

    一.背景 对于select的下拉列表,像国家选择这样的功能,全世界那么多国家,一直拉滚动条多辛苦,眼睛也要盯着找,累!so,为优化用户体验,带查找功能的下拉框是非常非常有必要的.都知道jquery里有这样的插件,但我们用的是Angularjs,更希望用双向绑定,指令的方式优雅地解决这个问题. 分析:    目标 在原来的<select ng-options="">标签上新加一个属性 select-search 就能支持查找的功能.如果这个属性没起作用,也不影响原来的sele

  • Angularjs实现带查找筛选功能的select下拉框示例代码

    前言 对于select的下拉列表,像国家选择这样的功能,全世界那么多国家,一直拉滚动条多辛苦,眼睛也要盯着找,累!所以为优化用户体验,带查找功能的下拉框是非常非常有必要的.都知道jquery里有这样的插件,但我们用的是Angularjs,更希望用双向绑定,指令的方式优雅地解决这个问题. 分析 我们的目标是在原来的<select ng-options="">标签上新加一个属性 select-search 就能支持查找的功能.如果这个属性没起作用,也不影响原来的select的功

  • AngularJS中下拉框的高级用法示例

    本文实例讲述了AngularJS中下拉框的高级用法.分享给大家供大家参考,具体如下: HTML正文: <body ng-app="myApp"> <!-- 对象内部属性遍历:x--key y---value --> <div ng-controller="myctr01"> {{sites}}<br> <select ng-model="site" ng-options="x for

  • AngularJS使用ng-repeat指令实现下拉框

    AngularJs 的 ng-repeat 让我们非常方便的遍历数组生成 Dom 元素,但是使用不当也会有性能问题.下面给大家分享在项目中使用ng-repeat指令实现下拉框. 1.问题背景 select下拉框里option组装成下拉框,这里利用ng-repeat指令来创建 2.实现源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>AngularJS之

随机推荐