Проблема с ng-model и ng-repeat, повторяющиеся формы

У меня есть страница, на которой создается несколько форм на основе ng-repeat. Все работает нормально, пока не напишите что-нибудь во ввод, и все будет дублироваться во всех других элементах ввода повторяющихся форм. Я использовал ng-model="Notify.message", который представляет собой не что иное, как объект, который принимает значение из ввода и отправляет элементу управления при отправке кнопки и, следовательно, остальной логике.

Я ищу, когда, если одна форма заполнена, другие формы должны оставаться спокойными и не должны дублировать значения, записанные во входном тексте формы 1.

Вот код:

<div data-ng-show="alluserposts.length > 0">
    <div id="b{{userpost.id}}" data-ng-repeat="userpost in alluserposts" >
            <div class="row" style="margin-left: -5px">
                <form class="text-center" role="form" id=f1{{userpost.id}} name="userForm"
                      ng-submit="notify(userForm.$valid, userpost, apiMe)" novalidate>
                    <div class="row">
                        <div class="col-xs-8 col-md-4">
                            <div class="form-group">
                                <input data-container="body" data-toggle="popover" data-placement="top"
                                       data-content="Any message which you would like to convey to post owner"
                                       type="text" ng-model="Notify.message" data-ng-init="Notify.message=''"
                                       id="u{{userpost.id}}"
                                       placeholder="Enter a Message or Phone number" class="form-control"
                                       required>

                                <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">It is
                                    required.</p>
                                <script>$(function () {
                                    $("[data-toggle='popover']").popover();
                                });
                                </script>

                                <input type="hidden" ng-model="Notify.loggedInEmail"
                                       ng-init="Notify.loggedInEmail = result.email"/>
                                <input type="hidden" ng-model="Notify.postId" ng-init="Notify.postId = userpost.id"/>
                                <input type="hidden" ng-model="Notify.destEmail"
                                       ng-init="Notify.destEmail = userpost.userEmail"/>
                            </div>
                        </div>

                        <div ng-show="loginStatus.status == 'connected'" class="col-xs-4 col-md-2">
                            <button class="btn btn-primary" ng-disabled="userForm.$invalid || !userForm.$dirty"
                                    type="submit">
                                Notify Post Owner
                            </button>
                        </div>
                    </div>
                </form>
                </p>
            </div>
        </div>
    </div>
</div>

Проблема скрипта - jsfiddle

Здесь вы можете, когда что-то записывается в один ввод, другой тоже заполняется :(. Также Notify — это сопоставленный объект Java, а сообщение — это переменная внутри него. Пожалуйста, дайте мне знать, как это можно разделить!


person AngryJS    schedule 11.05.2014    source источник


Ответы (2)


Вы привязываете все свои входы к одной и той же переменной на $scope. Вы должны привязать каждое текстовое поле к отдельной переменной на $scope:

Вид:

<ul ng-repeat="post in posts">
    <li>{{$index}}
        <input type="text" ng-model="emails[$index]"/>
    </li>
</ul>

Контроллер:

$scope.emails = [];
person MRB    schedule 11.05.2014

Я также нахожусь на начальной стадии angularjs.

Несколько дней назад я столкнулся с той же проблемой и решил ее, указав имя динамической модели в ng-model, например

<input type="text" ng-model="Notify[post.userEmail]" ng-init="Notify[post.userEmail] = post.userEmail" />

Рабочая скрипка: Fiddle

person Abs    schedule 11.05.2014