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的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
Jul 29 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
深入理解jQuery()方法的构建原理
Dec 05 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
如何提高javascript加载速度
Dec 26 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
js实现磁性吸附的示例
Oct 26 Javascript
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
jQuery 获取对象 定位子对象
2010/05/31 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
python简单实现刷新智联简历
2016/03/30 Python
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
灵泰克Java笔试题
2016/01/09 面试题
Delphi软件工程师试题
2013/01/29 面试题
英文简历中的自我评价
2013/10/06 职场文书
2014年前台文员工作总结
2014/12/08 职场文书