Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据AngularJS中另一个选择元素的值设置选择选项_Javascript_Html_Json_Angularjs - Fatal编程技术网

Javascript 根据AngularJS中另一个选择元素的值设置选择选项

Javascript 根据AngularJS中另一个选择元素的值设置选择选项,javascript,html,json,angularjs,Javascript,Html,Json,Angularjs,我几乎挣扎着说出这个问题的名字,就像我面对实际问题一样!我有两个选择: 选择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}}</

我几乎挣扎着说出这个问题的名字,就像我面对实际问题一样!我有两个选择:

选择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>
我有一个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行长。因此,我的问题是,如果用户在第一个选择框中选择“银行A”,我希望第二个选择框显示“分行1”和“分行2”。同样,如果用户选择“银行B”,我想显示“分行3”、“分行4”和“分行5”。如果用户在第一次选择中未选择任何内容,例如未选择任何银行,则第二次选择的分行不应包含任何内容。我相信你明白我的意思吧

如何在AngularJS实现这一点?

银行ng重复

分支重复的来源被分配给作用域中的getBranchs函数,这里我们传递之前选择的银行名称

在该功能中

$scope.getBranches = function(selectedBank) {

    // get the selected bank object from the banks array
    var filteredBank = $filter('filter')($scope.banks, selectedBank);

    // return the branches of the selected bank
    return filteredBank[0].branches;
};
不要忘记注入$filter服务,如下所示

app.controller('CtrlName', function($scope, $filter) {...
这是你的电话号码

如果您可以将“选择”更改为以下内容,则会更干净:

这将选择所选选项的整个对象

<select ng-model="user.bankName" ng-options="bank.name for bank in banks">
</select>
这样我们就可以摆脱这些分支


这是你能创建一个plunk吗?为什么不在Branchs中创建ng repeat=branch?没有人阻止您更新bankSelected中的分支。@zeroflagL这是否意味着在bankSelected中,根据选择的银行,我必须有一个长的switch语句来更新分支列表?这与K.Torress的答案中的GetBranchs类似。但与在每个摘要周期调用getBranchs相反,更新分支不会对性能产生影响。
<select ng-model="user.branch" ng-show="user.bankName">
    <option selected value="">Select</option>
    <option ng-repeat="branch in getBranches(user.bankName)" value="{{branch.code}}">{{ branch.name }}</option>
</select>
$scope.getBranches = function(selectedBank) {

    // get the selected bank object from the banks array
    var filteredBank = $filter('filter')($scope.banks, selectedBank);

    // return the branches of the selected bank
    return filteredBank[0].branches;
};
app.controller('CtrlName', function($scope, $filter) {...
<select ng-model="user.bankName" ng-options="bank.name for bank in banks">
</select>
<select ng-model="user.branch" ng-if="user.bankName" ng-options="branch.code as branch.name for branch in user.bankName.branches">
</select>