Angular: передать значения Mutliple в контроллер

0

Скажем, у меня есть список заката, который я динамически добавляю в свой шаблон html:

<button type="button" ng-click="addRow()" style="margin-bottom:5px;">Add cities </button>
    <div ng-repeat="city in cities">
     <select ng-model="cities_$index"
          ng-options="n.id as n.name for n in citiesList"
          class="form-control"
         ng-required="true">
    <option value="">-- Choose City --</option>
                                </select>
    </div>

Угловой контроллер:

$scope.addRow = function () {
 var newrow = [];
 if ($scope.cities.length === 0) {

                newrow.push({ 'cities': $scope.cities_0 });
            }
            else {
                $scope.cities.forEach(function (row, key) {

                    var city= '$scope.cities_'+key; // in php i can do this
//but i dont know how to do it with Js/Angular

                    console.log('row' + city);

                    newrow.push({ 'cities': city});

                    console.log(newrow);
                });
            }
 $scope.cities.push(newrow);
}

Я попробовал это, чтобы получить значения из выбранных городов, но у меня есть неопределенные значения.

$scope.send = function () {

          angular.forEach($scope.cities, function (value, key) {

                console.log(value.id); // the id from the ng-options
        };

В регулярном html-коде я просто добавляю name="city" и получаю все города, добавленные в поле ввода. Но как я могу получить thoses города от ng-модели в моем контроллере?

Я знаю, что я делаю что-то неправильно, но так как я новичок с угловой, я пытаюсь!

спасибо

  • 0
    разве это не просто «данные» в вашем случае, которые будут содержать массив?
  • 0
    Пожалуйста, включите код вашего контроллера, чтобы нам не приходилось что-либо предполагать.
Показать ещё 1 комментарий
Теги:
input

2 ответа

0

ng-model по-прежнему уникальна. Здесь вам не хватает того, что ng-repeat создает дочернюю область для каждого элемента. Следовательно, значение ng-model уникально для EACH-области. ng-model не ведет себя так же, как простой ввод HTML и наличие нескольких входов с одной и той же ng-model будет указывать только на один и тот же объект в памяти. И нет, "добавить" значения в город свойств, как вы ожидали бы в простых вложениях HTML.

Если вы используете datas объекта в своем ng-repeat, это обычная практика, что ваш <input/> будет привязан к свойству элементов datas.

<div ng-repeat="data in datas">
    <input type="text">{{data.city}}
</div>
  • 0
    Я обновил свой первый вопрос для лучшего понимания моей потребности. Спасибо
  • 0
    Держите ваш <select /> вне ng-repeat. Повторно используйте тот же <select />, чтобы добавить новые города. Используйте ng-repeat only для отображения коллекции выбранных городов.
0

предположив, что ключ (город) находится внутри массива данных, вы можете сделать:

<div ng-repeat="data in datas">
 <input type="text">{{data.name}}
</div>
  • 0
    Я обновил свой первый вопрос для лучшего понимания моей потребности. Спасибо

Ещё вопросы

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