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


Posted in Javascript onAugust 22, 2017

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

实现截图

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

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"><</option>
        <option value="1">=</option>
        <option value="2">></option>
      </select>
      {{views.data_range}}
      <input type="text">
    </div>
  </div>

3.实现效果

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

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

Javascript 相关文章推荐
一个网马的tips实现分析
Nov 28 Javascript
jQuery满屏焦点图左右滚动特效代码分享
Sep 07 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
JavaScript实现页面动态验证码的实现示例
Mar 23 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 #Javascript
node中koa中间件机制详解
Aug 22 #Javascript
理解javascript async的用法
Aug 22 #Javascript
React Native之TextInput组件解析示例
Aug 22 #Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 #Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 #Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 #Javascript
You might like
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
js常用函数 不错
2006/09/08 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
JS实现躲避粒子小游戏
2020/06/18 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
详解Python中的join()函数的用法
2015/04/07 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python如何生成各种随机分布图
2018/08/27 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
Python爬虫开发与项目实战
2020/12/16 Python
《这儿真好》教学反思
2014/02/22 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python