gpt4 book ai didi

javascript - 根据上一个字段动态填充下拉列表

转载 作者:行者123 更新时间:2023-11-28 19:42:36 24 4
gpt4 key购买 nike

我正在使用 AngularJS 创建一个带有多个下拉列表的表单。我想轻松定义这个逻辑:

如果下拉列表n选择了项目x,则下面的其他下拉列表(一个或多个)将填充y数据

...等等

例如,假设a=[1,2,3]1. 如果选择a=1,则b将为[8,9]2. 如果选择a=2,b将为[0,2]

...

我想你明白了。我正在考虑三种选择:

选项 1:我可以使用 AngularJS 来完成此操作,绑定(bind)下拉列表的值并执行一个巨大的嵌套 if 语句。但这看起来并不优雅。

选项 2:

我可以这样定义关系:

a = [1,2,3]
b = [
{
a:1,
value: [8,9]
}, {
a:2,
value: [0,2]
}
]

选项 3:

或者我可以做嵌套对象。那么如何处理表单模型中的嵌套 JSON 呢?另外如果我想改变层次结构有点困难?我宁愿把它平放。

a = [
{
value: 1,
b: [8,9]
}, {
value: 2,
b: [0,2]
}, {
value: 3,
b: []
}
]

做这样的事情最棒、最优雅的方式是什么?甚至有一个库/模块吗?

最佳答案

我会选择选项 2。

选择元素有一个键和一个用于其选项的显示值(键,displayValue)。

示例:

<select>
<option value="key">displayValue</option>
<select>

ng-options 接受以下格式的表达式:

ng-options="item.key as item.value for item in items"

这指定渲染选项时,key 将绑定(bind)到 item.key,value 将绑定(bind)到 item.value。

您还可以将整个项目绑定(bind)为键:

ng-options="item as item.value for item in items"

根据您提供的 key ,当选择某个选项时,ng-model 将与其绑定(bind)。

Controller

    var app = angular.module("app", []);
app.controller('Ctrl', function ($scope) {
var b = [
{
a: 1,
value: [8, 9]
}, {
a: 2,
value: [0, 2]
}
];
$scope.b = b;
});

HTML

    <body ng-app="app" ng-controller="Ctrl">
<select ng-model="first" ng-options="bb as bb.a for bb in b"></select> {{first}}<br />
<select ng-model="second" ng-options="cc as cc for cc in first.value"></select>{{second}}
</body>

JSFiddle

关于javascript - 根据上一个字段动态填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com