значение в теге выбора HTML преобразовать массив в строку Javascript

0

Я использую 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

Теги:
arrays
angular-ngmodel

1 ответ

0
Лучший ответ

Вместо выполнения 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

  • 0
    оно работает! Почему ng-repeat не работает?
  • 0
    Когда вы передаете как value="{{state}}" вы превращаете этот объект в строку из-за "{{...}}" и с помощью ng-options вы передаете реальный объект

Ещё вопросы

Сообщество Overcoder
Наверх
Меню