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 Study Notes学习笔记 (二)
Aug 04 Javascript
js中有关IE版本检测
Jan 04 Javascript
JS数字抽奖游戏实现方法
May 04 Javascript
探究JavaScript函数式编程的乐趣
Dec 14 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
js实现简易聊天对话框
Aug 17 Javascript
老生常谈JS中的继承及实现代码
Jul 06 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
JS document内容及样式操作完整示例
Jan 14 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 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生成shtml类用法实例
2014/12/09 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
网络教育自我鉴定
2014/02/04 职场文书
活动总结书
2014/05/08 职场文书
安全责任书模板
2014/07/22 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书