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简单实现banner图片切换
Jan 02 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
JavaScript获取图片的原始尺寸以宽度为例
May 04 Javascript
JavaScript中的值类型详细介绍
Dec 29 Javascript
js实现文本框选中的方法
May 26 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
Javascript中绑定click事件的四种方式介绍
Oct 26 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 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/07 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
jsTree使用记录实例
2016/12/01 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
python 正则式使用心得
2009/05/07 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Django操作session 的方法
2020/03/09 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
竞争性谈判邀请书
2014/02/06 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
公司的力量观后感
2015/06/05 职场文书
大学生村官入党自传
2015/06/26 职场文书