将对象添加到子对象数组中,形式为-错误原因

时间:2018-07-25 15:06:38

标签: angularjs

我有一个实体Customer,其中有多个Contacts
奇怪的是,在我的应用程序中添加联系人并非总是可行(已在Firefox和Chrome上测试)。 我无法重现问题,这是我需要您帮助的地方-找出可能导致错误的原因。

以下示例中的逻辑相同:
http://jsfiddle.net/Cg8kF/379/

但是当我在真实应用程序中执行此操作时,什么也没发生,即使在addContact函数中填充了“联系人”数组,该数组仍然为空:

<button class="btn btn-default btn-block btn-sm" ng-click="addContact()" type="button">
    + Ansprechpartner hinzufügen...
</button>
{{selectedCustomer}}

enter image description here

$scope.addContact = () => {
    console.log("Adding Contact");
    $scope.selectedCustomer.contacts.push({});
    console.log($scope.selectedCustomer.contacts);
};

enter image description here

调试时,不再调用我的js函数,只调用了一些内部angularjs函数。但这显然是新添加的对象被删除的地方,我不知道为什么。 我把手表放在不同的地方,以检查何时删除空对象,但是它什么也没记录。

$scope.$watch('selectedCustomer', (newVal, oldVal) => {
    console.log("SelectedCustomer Changed from", oldVal, "to", newVal);
});

我追踪了工作流程和失败流程所走的路径,发现了不同之处: 在我的jquery.js文件第5013行:

return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
                    jQuery.event.dispatch.apply( elem, arguments ) : undefined;

工作路径跳至contentscript.jsi =...)中的第1117行:

// https://github.com/chrisaljoudi/uBlock/issues/205
// Do not handle added node directly from within mutation observer.
var observerHandler = function(mutations) {
    //console.time('dom watcher/observer handler');
    var nodeList, mutation,
        i = mutations.length;

失败的路径重复jquery行几次,最后跳到$$cache...的第2031行(angular-filter.js

/**
   * @description
   * for angular version that greater than v.1.3.0
   * if clear cache when the digest cycle end.
   */
  function cleanStateless() {
    $$timeout(function() {
      if(!$rootScope.$$phase)
        $$cache = {};
    });
  }

0 个答案:

没有答案