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中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
js+html+css实现鼠标移动div实例
Jan 30 Javascript
使用JS 清空File控件的路径值
Jul 08 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
Mar 04 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
在vant中使用时间选择器和popup弹出层的操作
Nov 04 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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 数组使用详解 推荐
2011/06/02 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
javascript中 try catch用法
2015/08/16 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
详解K-means算法在Python中的实现
2017/12/05 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
巴基斯坦购物网站:Goto
2019/03/11 全球购物
类如何去实现接口
2013/12/19 面试题
党支部公开承诺践诺书
2014/03/28 职场文书
青年文明号创建承诺
2014/03/31 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
教师自查自纠材料
2014/10/14 职场文书
初二数学教学反思
2016/02/17 职场文书