Я использую Javascript с Angular Js. В моем контроллере у меня есть следующие элементы:
$scope.address = [];
$scope.states = [
{ name:"State 1", cities:[ "City Mexico 1", "City Mexico 2","City Mexico 3"] },
{ name:"State 2", cities:["City 1", "City 2", "City 3"] }
];
На мой взгляд, я делаю:
<select ng-model="address.state" placeholder="Estado" >
<option ng-repeat="state in states" value="{{state}}"> {{state.name}}</option>
</select>
Если я выберу параметр, а затем создам console.log(address.state), я получаю объект как строку, а не как массив. Как получить объект как массив (json).
Консольный вывод выглядит следующим образом:
[state: "{"name":"State 1","cities":["City Mexico 1","City Mexico 2","City Mexico 3"]}"]
Я хочу получить объект как массив, потому что тогда я делаю $ Scope.address.state.city
Вместо выполнения ng-repeat
в <option>
вы можете выполнить ng-options
в <select>
:
<select ng-model="address.state" ng-options="state.name for state in states" placeholder="Estados"></select>
Таким образом, объект состояния передается в $scope.address
и вы можете делать $scope.address.state.cities
Рабочий пример: https://plnkr.co/edit/k2gK5GNEt2xTrMbwih7V?p=preview
value="{{state}}"
вы превращаете этот объект в строку из-за "{{...}}" и с помощьюng-options
вы передаете реальный объект