2015-10-07 64 views
1

我正在尋找一種方法來使用http.get服務從它們所屬的聯邦狀態中檢索城市。我從一個選定的州創建了一個依賴城市的下拉菜單。Angularjs依賴州 - >城市下拉,從http.get服務檢索城市

這裏是工作提琴作爲一個基地,一個DINAMIC版本:

http://jsfiddle.net/amrigo/v8u7v4af/

我的意思是有州和城市:

function CountryController($scope) { 
       $scope.countries = { 
        'Michigan': { 
         'Detroit': [], 
         'Flint': [] 
        }, 
        'Texas': { 
         'Austin': [], 
         'Houston': [] 
        }, 
        'California': { 
         'Los Angeles': [], 
         'San Francisco': [] 
        } 

       }; 
      } 

我怎麼能寫一個工廠,接收狀態ID並調整爲JSON格式:('Los Angeles':[],'San Francisco':[])。

.factory('citiesByState', function($http) { 
    return { 
     getVersion: function(id) { 
      return $http.get('http://www.service.com/ckeck_cities.php') 
          .then(function(response) { 
           return response.data; 
      }); 
     } 
    }; 
}); 


<select class="form-control input-lg" id="country" ng-model="states" ng-options="country for (country, states) in countries"> 
    <option value=''>Select</option> 
</select> 

<select class="form-control input-lg" id="state" ng-disabled="!states" ng-model="cities" ng-options="state for (state,city) in states"> 
    <option value=''>Select</option> 
</select> 
+1

什麼狀態ID?數據不包含任何ID屬性。如果您使用嵌套數組而不是嵌套對象,可能會更簡單 – charlietfl

+0

您的意思是這種格式:? '''''''''''''','stateName':'Michigan':{'id':'1','name':'底特律'}, {'id':' '''','name':'Flint'} }, 'id':'2','stateName':'Texas':{'id':'3','name':'Austin' }, {'id':'4','name':'Houston'} }, 'id':'3','stateName':'California':{'id':'5' ,'name':'Los Angeles'}, {'id':'6','name':'San Francisco'} } };' –

+1

close,但這不是有效的結構,數組 – charlietfl

回答

2

工廠將按給定狀態提取城市並將其保存在州 - >城市地圖中。

.factory('citiesByState', function($http) { 
    return { 
     locationData: {}, 
     getCities: function(id) { 
      var that = this; 
      return $http.get('http://www.service.com/ckeck_cities.php?state='+id) 
          .then(function(response) { 
           that.locationData[id] = response.data; 
      }); 
     } 
    }; 
}); 

你再注入的服務爲您的控制器和使用國有>城市地圖更新您的UI。

function CountryController($scope, $citiesByState) { 
     $citiesByState.getCities(1); // pass your state id 
     $scope.cities = $citiesByState.locationData; //cities will contain your data for the given state when the response is received 
} 
+0

如何將結果數據傳遞給模板?並將變量,如id和名稱綁定到選擇框?它能以這種格式嗎? ''Michigan':[ {'id':'1','name':'Detroit'}, {'id':'2','name':'Flint'} ], 'Texas ':['id':'3','name':'Austin'}, {'id':'4','name':'Houston'} ]' '