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 form表单提交插件asp.net后台中文解码
Jun 12 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
JS插件clipboard.js实现一键复制粘贴功能
Dec 04 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
js验证身份证号码记录的方法
Apr 26 Javascript
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
ElementUI实现el-form表单重置功能按钮
Jul 21 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学习 计数器实例代码
2008/06/15 PHP
php文件上传的简单实例
2013/10/19 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
原生js写的放大镜效果
2012/08/22 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
js中new一个对象的过程
2017/02/20 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
外贸业务员工作职责
2014/01/06 职场文书
美术指导求职信
2014/03/17 职场文书
个人工作主要事迹
2014/05/08 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书