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 相关文章推荐
javascript中Object使用详解
Jan 26 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
Dec 12 Javascript
javascript中的相等操作符(==与===区别)
Dec 21 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 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
smarty的保留变量问题
2008/10/23 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
拖拉表格的JS函数
2008/11/20 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
js中日期的加减法
2015/05/06 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
python tornado修改log输出方式
2019/11/18 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
财务支持类个人的自我评价
2014/02/14 职场文书
主题实践活动总结
2014/05/08 职场文书
酒店节能减排方案
2014/05/26 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书