簡體   English   中英

角度js中帶有json數據的依賴下拉列表

[英]dependent dropdown with json data in angular js

我正在嘗試使用 JSON 數據進行依賴下拉

用於(用於)獲取將其集成到下拉列表中的密鑰但不起作用,無論我每次通過鍵訪問 json 數據時搜索什么以獲取此結構中的值,我都可以在下拉列表中獲取它 [{ name:"india"},{name:"usa"}]。但是使用當前的 json 結構我無法做到。

HTML:-

<div ng-controller="myCtrl3">
 <select>
  <option>Select Country</option>
  <option ng-repeat="country in chooseCountries"></option>
  <option ng-repeat="states in country"></option>
  <option ng-repeat="city in states"></option>
 </select>
</div>

JS:-

app.controller('myCtrl3',function($scope,$http){
 $http({
  url:'js/country.json',
  method:'GET'
 })
 .then(function(response){
 $scope.chooseCountries = response.data;
 });
});

JSON(country.json):-

[{
"INDIA": {
    "KARNATAKA": ["BANGALORE", "UDUPI", "MANGALORE"],
    "TELENGANA": ["HYDERABAD", "GUNTUR", "SHANKERPALLY"]
},
"USA": {
    "CALIFORNIA": ["SAN JOSE", "SAN HOSE", "NEW YORK"],
    "FLORIDA": ["MIAMI", "DENVER"],
    "INDIAPOLIS": ["INDIANA", "MASACHUTTEUS"]
},
"AUSTRALIA": {
    "NEW SOUTH WALES": ["SYDNEY", "BRISBANE"],
    "QUEENSLAND": ["PERTH", "VICTORIA"],
    "WESTERN AUSTRALIA": ["MELBOURNE", "MCG"]
}
}]

我希望輸出的第一個下拉列表應該顯示 INDIA、USA、AUSTRALIA 如果我單擊 INDIA 第二個下拉列表應該在第三個下拉列表中顯示 KARNATAKA 和 TELENGANA 如果我單擊 KARNATAKA 它應該顯示 BANGALORE、UDUPI、MANGALORE。沒有任何錯誤,但是coudn沒有得到想要的輸出。

我猜你不能改變返回的 JSON 的格式。 如果是這種情況,則您沒有可以使用的良好形成的對象層次結構,因此您必須回退到使用(key, value) 下面是一個簡單的例子,說明如何完成你所追求的。

 angular.module('app', []) .controller('ctrl', function($scope) { $scope.countryChoices = [{ "INDIA": { "KARNATAKA": ["BANGALORE", "UDUPI", "MANGALORE"], "TELENGANA": ["HYDERABAD", "GUNTUR", "SHANKERPALLY"] }, "USA": { "CALIFORNIA": ["SAN JOSE", "SAN HOSE", "NEW YORK"], "FLORIDA": ["MIAMI", "DENVER"], "INDIAPOLIS": ["INDIANA", "MASACHUTTEUS"] }, "AUSTRALIA": { "NEW SOUTH WALES": ["SYDNEY", "BRISBANE"], "QUEENSLAND": ["PERTH", "VICTORIA"], "WESTERN AUSTRALIA": ["MELBOURNE", "MCG"] } }]; $scope.selectedCountry = {}; $scope.selectedState = {}; $scope.selectedCity = ''; });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <div ng-app="app" ng-controller="ctrl"> <div> <select ng-model="selectedCountry" ng-options="value as key for (key, value) in countryChoices[0]"></select> </div> <div> <select ng-model="selectedState" ng-options="value as key for (key,value) in selectedCountry"></select> </div> <div> <select ng-model="selectedCity" ng-options="value as value for value in selectedState"></select> </div> </div>

為了讓它工作,你的json數據應該是這樣的:

[{
  country: "INDIA",
  states: [
  {
    "KARNATAKA": {
      cities: ["BANGALORE", "UDUPI", "MANGALORE"]
    }
  }
}]

希望能幫助到你...

暫無
暫無

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

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