AngularJS: связать непредсказуемое количество ввода в форме

0

Я делаю заявку ионным и работаю вместе с сервером Laravel. Проблема в том, что у меня есть список предметов, хранящихся на моем сервере. В ионном приложении я запрошу информацию о элементах с сервера, чтобы создать форму. У меня есть код здесь,

<div ng-repeat="itemGroup in mydata">
    <div class="item item-divider nn-card-header">
        {{itemGroup.name}}
    </div>
    <ion-list>
        <ion-item ng-repeat="item in itemGroup.items">
            <h3>{{ item.name }}</h3>
            <div class="item range range-positive">
                broken
                <input type="range" id="{{ item.idgB }}" min="0" max="{{ item.max }}" ng-model="item.idgB" ng-init="item.idgB=0">
                {{ item.idgB }}
            </div>
            <div class="item range range-positive">
                missing
                <input type="range" id="{{ item.idgM }}" name="volume" min="0" max="{{ item.max }}" ng-model="item.idgM" ng-init="item.idgM=0">
                {{ item.idgM }}
            </div>
        </ion-item>
    </ion-list>
  </div>

что mydata - это данные json:

[{
    "name":"name",
    "items":[{
        "id":1,
        "name":"itemA",
        "max":2,
        "idgM":"m.3.1.1",
        "idgB":"b.3.1.1"
    }]
}]

Мой вопрос: я не знаю, как получить значение из ввода, потому что я не могу использовать jquery для поиска элемента. У меня есть идея, что я отправлю список всех уникальных идентификаторов элементов с сервера на приложение. Но я не знаю, как получить данные ng-model с помощью строковой переменной.

Теги:
ionic-framework

3 ответа

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

Вам не нужно jQuery для получения значения из ввода, у вас есть массив объектов, которые вы зацикливаете:

itemGroup.items

и в вашем коде вы связываете каждый объект этого массива с:

ng-repeat="item in itemGroup.items"
ng-model="item.idgB"
ng-model="item.idgM

то я ожидаю, что эти значения idgB idgM свойства idgB и idgM каждого элемента вашего массива itemGroup.items

но поскольку вы используете:

ng-repeat="itemGroup in mydata"

сами элементы itemGroup (s) являются элементами массива mydata, а затем в вашем контроллере для доступа к этим входным данным вы должны иметь что-то вроде этого:

angular.forEach(mydata, function(itemGroup, key) {
  angular.forEach(itemGroup, function(item, key) {
    console.log("First input value: " + item.idgB);
    console.log("Second input value: " + item.idgM);
  });
});
  • 0
    Спасибо за ваш ответ. но у меня все еще есть вопрос, могу ли я в любом случае использовать $scope.name пока у меня есть name в качестве строковой переменной.
  • 0
    конечно, $ scope.name в вашем контроллере привязан к {{name}} вашего вида
0

Я думаю, на вопрос здесь уже был дан ответ: Как создать массив с ng-моделью AngularJS.

Если у вас есть какие-либо вопросы о том, если, не стесняйтесь спрашивать в комментариях

0

Значение из ввода хранится в модели, поэтому вам не нужно искать элемент, вы уже используете привязку.

Вот помощь по использованию ввода в угловом формате: https://docs.angularjs.org/api/ng/directive/input

  • 0
    для Knighty Ra: Также, скажите мне, где и как вы хотите использовать это входное значение.
  • 0
    Я хочу отправить все значения на сервер через AJAX при нажатии кнопки. Я не знаю, как делать все эти вещи. Спасибо за помощь.
Показать ещё 2 комментария

Ещё вопросы

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