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 相关文章推荐
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
JQuery动画和停止动画实例代码
Mar 01 Javascript
jquery实现搜索框常见效果的方法
Jan 22 Javascript
使用console进行性能测试
Apr 27 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
Oct 26 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
vue实现表单录入小案例
Sep 27 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正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
隐性调用php程序的方法
2015/06/13 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
php中this关键字用法分析
2016/12/07 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
python导入库的具体方法
2020/06/18 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
阿德的梦教学反思
2014/02/06 职场文书
小学生家长寄语
2014/04/02 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
教师求职简历自我评价
2015/03/10 职场文书
董事长年会致辞
2015/07/29 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
对讲机的最大通讯距离是多少
2022/02/18 无线电