【发布时间】:2015-12-25 15:30:09
【问题描述】:
我几乎和实际问题一样难以命名这个问题!我有两个选择:
选择 1:
<select ng-change="bankSelected()" ng-model="user.bankName">
<option selected value="">Select</option>
<option ng-repeat="bank in banks" value="{{bank.name}}">{{bank.name}}</option>
</select>
选择 2:
<select ng-model="user.branch">
<option selected value="">Select</option>
<option ng-repeat="// what to do??"></option>
</select>
我的控制器中的“bankSelected()”函数:
$scope.bankSelected = function () {
console.log('Bank selected: ' + $scope.user.bankName);
}
我有一个 JSON 文件,我从中导入所有银行对象,这是一个示例:
{
"banks" : [
{
"name" : "Bank A",
"branches" : [
{
"name" : "Branch 1",
"code" : "1"
},
{
"name" : "Branch 2",
"code" : "2"
}
]
},
{
"name" : "Bank B",
"branches" : [
{
"name" : "Branch 3",
"code" : "3"
},
{
"name" : "Branch 4",
"code" : "4"
},
{
"name" : "Branch 5",
"code" : "5"
}
]
}
]
}
我实际使用的 JSON 大约有 1000 行长。所以我的问题是,如果用户在第一个选择框中选择'Bank A',我希望第二个选择框显示'Branch 1' 和'Branch 2'。同样,如果用户选择'Bank B',我想显示'Branch 3'、'Branch 4' 和'Branch 5'。如果用户在第一次选择中没有选择任何内容(例如没有选择银行),那么第二次选择(分支)不应该包含任何内容。我确定你明白我在说什么?
如何在 AngularJS 中实现这一点?
【问题讨论】:
-
你能创建一个 plunk 吗?
-
为什么不
ng-repeat="branch in branches?没有人阻止您在bankSelected()中更新branches。 -
@zeroflagL 这是否意味着在 bankSelected() 中我必须有一个很长的 switch 语句来根据选择的银行更新分行列表?
-
类似于
getBranches来自 K.Torress 的回答。但是更新branches不会对性能产生影响,这与在每个摘要周期调用getBranches不同。
标签: javascript html json angularjs