Angularjs实现下拉框联动的示例代码

第一种联动方式,在网上看到的,感觉对于我的使用性不高,比较后端不会提供这种json。。。

实现截图

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">&lt;</option>

<option value="1">=</option>

<option value="2">&gt;</option>

</select>

{{views.data_range}}

<input type="text">

</div>

</div>

3.实现效果

以上是 Angularjs实现下拉框联动的示例代码 的全部内容, 来源链接: utcz.com/z/313734.html

回到顶部