对象不会添加到一个$ scope变量中,而是添加到所有其他变量中

时间:2018-06-27 10:05:56

标签: angularjs

每次我想添加一个表格来填写客户公司的新联系人时,我都会调用此功能:

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

但是我注意到有一个客户,在调用该方法后,神奇地在某个时刻失去了联系对象,我不知道为什么,因为在调试器中,只有一些标准的angularjs方法被执行不应该在其中扮演角色,我也不理解他们。

通常控制台如下所示:
第一次,第二次和第三次点击添加联系人按钮,结果如下:

{"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":[{}]}

您看到有一个添加但未保存的空对象,每次我再次单击添加联系人时,contacts数组最初都是空的。

在mongo数据库中,这两个客户看起来完全一样: Working Not working

我还可以分析什么以找出问题所在和解决方法?

  

编辑
   通过调试,我发现工作流在不工作时遍历不同路径的位置:
  contentscript.js,行1114 var observerHandler = function(mutations) {...在运行时被遍历,但在失败过程中未到达-在jquery.js中,行{13:50}调用return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined;。   我的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>

0 个答案:

没有答案