Объект не добавлен ни к одной переменной $ scope, но ко всем другим - PullRequest
0 голосов
/ 27 июня 2018

Каждый раз, когда я хочу добавить форму для заполнения нового контактного лица компании-клиента, я вызываю эту функцию:

$scope.addContact = () => {
    $scope.selectedCustomer.contacts.push({});
    console.log(JSON.stringify($scope.selectedCustomer));
};

Но я заметил, что есть один клиент, который магически теряет этот контактный объект в какой-то момент после вызова метода, и я не знаю почему, потому что в отладчике выполняются только некоторые стандартные методы angularjs, которые не должны не играет роли в этом, и я их не понимаю.

Обычно консоль выглядит так:
1-е, 2-е и 3-е нажатие на кнопку добавить контакт приводит к:

{"id":135,"masterData":{},"name":"Normal Test","contacts":[{}]}
{"id":135,"masterData":{},"name":"Normal Test","contacts":[{"$$hashKey":"object:2205"},{}]}
{"id":135,"masterData":{},"name":"Normal Test","contacts":[{"$$hashKey":"object:2205"},{"$$hashKey":"object:2207"},{}]}

Но для одного объекта (пока, но я думаю, что есть больше) та же самая ситуация печатает это:

{"id":150,"masterData":{},"name":"Test AG","contacts":[{}]}
{"id":150,"masterData":{},"name":"Test AG","contacts":[{}]}
{"id":150,"masterData":{},"name":"Test AG","contacts":[{}]}

Как вы видите, есть пустой объект, добавленный, но не сохраненный, каждый раз, когда я нажимаю снова добавить контакт , массив контактов сначала пуст.

В dong Монго эти два клиента выглядят одинаково: Working Not working

Что еще я могу проанализировать, чтобы выяснить, в чем проблема и что с этим делать?

EDIT
Отладкой я нашел место, где рабочий процесс пересекает другой путь, когда он не работает:
contentcript.js, строка 1114 var observerHandler = function(mutations) {... перебирается, когда он работает, но не достигается во время сбойного процесса - он вызывается после: return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; в jquery.js, строка 5013. Мой HTML:

<div class="form-group">
    <label for="contacts" class="col-sm-3 control-label">Ansprechpartner</label>
    <div class="col-sm-9">
        <table id="contacts" ng-if="selectedCustomer.contacts.length"
               class="table-condensed" cellpadding="10">
            <tr>
                <th>Name</th>
                <th>Telefon</th>
                <th>E-Mail</th>
            </tr>
            <tr ng-repeat="contact in selectedCustomer.contacts">
                <td>
                    <a class="delete" ng-hide="readonly" ng-click="deleteContact(contact)">
                        <i class="fa fa-minus-circle"></i>
                    </a>
                    <input type="text" class="form-control"
                           ng-readonly="readonly" ng-model="contact.name"
                           placeholder="keine Angabe">
                </td>
                <td>
                    <input type="text" class="form-control" ng-readonly="readonly"
                           ng-model="contact.phone" placeholder="keine Angabe"/>
                </td>
                <td>
                    <input type="text" class="form-control" ng-hide="readonly"
                           ng-model="contact.email" placeholder="keine Angabe"/>
                    <a href="mailto:{{contact.email}}" ng-show="readonly">
                        <input type="text" class="form-control"
                               ng-readonly="readonly" ng-model="contact.email"
                               placeholder="keine Angabe"/>
                    </a>
                </td>
            </tr>
        </table>
        <div class="addContact" ng-hide="readonly">
            <button class="btn btn-default btn-block btn-sm" ng-click="addContact()"
                    type="button">+ Ansprechpartner hinzufügen...
            </button>
        </div>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...