簡體   English   中英

AngularJS填充一個 <select>基於先前輸入的字段<select>領域

[英]AngularJS populate a <select> field based on input from previous <select> field

我有2個相互依賴的下拉菜單。 第一個可以正常工作,但是我希望第二個下拉列表根據第一個菜單中的選擇進行填充。 我意識到以前曾問過類似的問題,但我的數據似乎采用了不同的格式。 這是我的代碼:

<body ng-app="patientSim" ng-controller="patientCtrl">

<button style="width:20%;" ng-click="addChar()">Add Characteristic</button>
<div class="row">
    <div class="col-md-3"><select ng-model="selectedCategory" ng-options="x.cat as (x.cat | underFilter) for x in (enumChars | duplicateFilter)"></select></div>
    <div class="col-md-3"><select ng-model="selectedName" ng-options="x.enumName as (x.enumName | underFilter) for x in enumChars"></select></div>
    <div class="col-md-3"><button ng-click="eqWeight()">Equalize Weights</button></div>
    <div class="col-md-3"><button ng-click="reset()">Reset</button></div>
</div>

這是JSON的2個部分:

 {
        "enumID": 1,
        "enumName": "Gender",
        "isTree": false,
        "enumAlloc": 10,
        "enumVals": [
            "Unknown",
            "Male",
            "Female",
            "Transgender"
        ],
        "enumText": null,
        "cat": "Demographics"
    }, 
      {
        "enumID": 2,
        "enumName": "Race",
        "isTree": false,
        "enumAlloc": 15,
        "enumVals": [
            "Unknown",
            "American Indian/Alaska Native",
            "Asian",
            "Black",
            "Native Hawaiian/Other Pacific Islander",
            "White/Caucasian",
            "Other"
        ],
        "enumText": null,
        "cat": "Demographics"
    },

第一個下拉列表中均以“ cat”名稱填充“ Demographics”和“ Diseases and Injuries”。 整個文件包含5個“受眾特征”部分和1個“疾病和傷害”部分。 所有6個部分均存儲在名為enumChars的作用域值中,我在ng-options中使用了該值。 有些部分的值超過45,000,所以我不想在這里發布它們。 我的目標是在第二個下拉列表中填充與“ cat”相對應的“ enumName”。 因此,例如,如果我在第一個下拉列表中選擇“ Demographics”,則第二個下拉列表將填充“ Gender”,“ Race”以及其他部分中的其他enumName值,這些值也包含“ cat”:“ Demographics”。 我將如何去做呢? 謝謝!!

如果我很好地理解了您的問題,則您要根據第一個中 <select>的值,使用enumVals填充第二個 <select> <select>

然后,如果我是正確的,則可以執行以下操作:

 (function() { "use strict"; angular.module('app', []) .controller('mainCtrl', function($scope) { $scope.enumChars = [ { "enumID":1, "enumName":"Gender", "isTree":false, "enumAlloc":10, "enumVals":[ "Unknown", "Male", "Female", "Transgender" ], "enumText":null, "cat":"Any category" }, { "enumID":2, "enumName":"Race", "isTree":false, "enumAlloc":15, "enumVals":[ "Unknown", "American Indian/Alaska Native", "Asian", "Black", "Native Hawaiian/Other Pacific Islander", "White/Caucasian", "Other" ], "enumText":null, "cat":"Demographics" } ]; }); })(); 
 <html ng-app="app"> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-messages/1.5.7/angular-messages.min.js"></script> </head> <body ng-controller="mainCtrl"> <button style="width:20%;" ng-click="addChar()">Add Characteristic</button> <div class="row"> <div class="col-md-3"> <select ng-model="selectedCategory" ng-options="obj as obj.cat for obj in enumChars"></select> </div> <div class="col-md-3" ng-if="selectedCategory"> <select ng-model="selectedName" ng-options="enum for enum in selectedCategory.enumVals"></select> </div> <div class="col-md-3"> <button ng-click="eqWeight()">Equalize Weights</button> </div> <div class="col-md-3"> <button ng-click="reset()">Reset</button> </div> </div> </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM