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

 更新时间:2017年08月22日 16:23:30   作者:治电小白菜  
本篇文章主要介绍了Angularjs下拉框联动的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

第一种联动方式,在网上看到的,感觉对于我的使用性不高,比较后端不会提供这种json。。。

实现截图

html

  <select ng-model="s1" ng-options="selectData.name for selectData in selectDatas">
    <option value="">--产品类目--</option>
  </select>
  <select ng-model="s2" ng-options="util.name for util in s1.utils">
    <option value="">--产品类型--</option>
  </select>

js

   $scope.selectDatas = [{
        code: 01,
        name: "监控安全类",
        utils: [
          { code: 0101, name: "遥控门锁" },
          { code: 0102, name: "声光报警器" },
          { code: 0103, name: "摄像头" }
        ]
      },
      {
        code: 02,
        name: "大家电",
        utils: [
          { code: 0201, name: "空调" },
          { code: 0202, name: "洗衣机" },
          { code: 0203, name: "洗碗机" }
        ]
      }
    ]

第二种联动方式,这次是根据后台要求,自己写的一个联动,当然没有请求接口,就是单独写个固定值

1.联动的思路

1.首先是选择总类别
2.总类别选择后,会关联出设备
3.设备选择后,会关联出属性
4.属性选择后,会根据属性的不同,关联出不同的项目

2.代码

1)设备类别下拉

html

<select ng-model="devicetype" ng-options="x.category for x in devices" ng-change="changeType(devicetype)">
  <option value="">--设备--</option>
</select>

js

$scope.devices = [
   {"category":"大家电"},
     {"category":"红外感应"},
   {"category":"监控"},
   {"category":"灯光"},
]
// 根据大类来获取设备列表
$scope.changeType = function(x){
  $log.log(x.category)
  //TODO: 真正使用肯定是要用$http来请求设备列表
  //暂时测试使用下面的
  switch(x.category){
  case "大家电":
      $scope.yourdevices = [
        {"dev":"电视机(mac:32309fsaf)"},
        {"dev":"洗衣机(mac:32309fsaf)"},
        {"dev":"冰箱(mac:32309dqsq)"},
        {"dev":"空调(mac:32309fsaf)"}
      ];
      break;
  }
}

2)设备下拉

html

<select ng-model="yourdevice" ng-options="x.dev for x in yourdevices" ng-change="changeDev(yourdevice)">
  <option value="">--你的设备--</option>
</select>

js

$scope.changeDev = function (x) {
 $log.log(x.dev)
 switch (x.dev) {
  case '电视机(mac:32309fsaf)':
   $scope.params = [
    {
     'display_name': '开关',
     'data_type': 'bool',
     'data_range': [ '开','关']
    },
    {
     'display_name': '温度',
     'data_type': 'num',
     'data_range': [30]
    }
   ]
   //此处将json转换成对象,方便下面的属性相关操作,例如“开关”属性,要找去其相关的类型数据和值
   var paramsarr = $scope.params;
   var paramobj = {
   };
   paramsarr.forEach(function (v, i) {
    paramobj[v.display_name] = v;
   })
   $scope.paramobjs = paramobj;
 }
}

3)属性下拉

html

<select ng-model="param" ng-options="p.display_name for p in params" ng-change="changeParam(param.display_name)">
  <option value="">--属性--</option>
</select>

js

//获取数据类型和数据值
$scope.changeParam = function (x) {
 var pobj = $scope.paramobjs;
 $scope.views = pobj[x];
 $scope.type = $scope.views.data_type
 $log.log($scope.views)
}

4)属性项

html

使用ng-swtch来进行判断显示,若数值类型位bool,则显示单选框,若数值类型位num,则显示位大小比较下拉框和文本框

<div ng-switch="type">
    <div ng-switch-when="bool" style="margin: -20px auto auto 90px;">
      <label ng-repeat="x in views.data_range">
        <input type="radio" name="radio" value="{{x}}">{{x}}
      </label>
    </div>
    <div ng-switch-when="num" style="margin: -20px auto auto 90px;">
      <select ng-model="compare">
        <option value="0">&lt;</option>
        <option value="1">=</option>
        <option value="2">&gt;</option>
      </select>
      {{views.data_range}}
      <input type="text">
    </div>
  </div>

3.实现效果

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

相关文章

  • angular学习之动态创建表单的方法

    angular学习之动态创建表单的方法

    这篇文章主要介绍了angular学习之动态创建表单的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 用Angular实现一个扫雷的游戏示例

    用Angular实现一个扫雷的游戏示例

    这篇文章主要介绍了用Angular实现一个扫雷的游戏示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Angular6 发送手机验证码按钮倒计时效果实现方法

    Angular6 发送手机验证码按钮倒计时效果实现方法

    这篇文章主要介绍了Angular6 发送手机验证码按钮倒计时效果实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • AngularJs 利用百度地图API 定位当前位置 获取地址信息

    AngularJs 利用百度地图API 定位当前位置 获取地址信息

    本文主要介绍了AngularJs 利用百度地图API 定位当前位置 获取地址信息的方法步骤。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • AngularJS发送异步Get/Post请求方法

    AngularJS发送异步Get/Post请求方法

    今天小编就为大家分享一篇AngularJS发送异步Get/Post请求方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 理解Angular数据双向绑定

    理解Angular数据双向绑定

    AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。这篇文章主要带着大家理解Angular数据双向绑定,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • AngularJS实现路由实例

    AngularJS实现路由实例

    本文给大家分享的是使用angularjs路由框架实现的一个简单页面跳转功能,非常的实用,也很详细,有需要的小伙伴可以参考下
    2017-02-02
  • Angular1.x自定义指令实例详解

    Angular1.x自定义指令实例详解

    这篇文章主要介绍了Angular1.x自定义指令,结合实例形式分析了Angular1.x自定义指令的实现与使用方法,以及相关操作技巧与注意事项,需要的朋友可以参考下
    2017-03-03
  • Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)

    Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)

    这篇文章主要介绍了Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码),需要的朋友可以参考下
    2017-10-10
  • Angular6笔记之封装http的示例代码

    Angular6笔记之封装http的示例代码

    这篇文章主要介绍了Angular6笔记之封装http的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论