我有一个实体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}}
$scope.addContact = () => {
console.log("Adding Contact");
$scope.selectedCustomer.contacts.push({});
console.log($scope.selectedCustomer.contacts);
};
调试时,不再调用我的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.js
(i =...
)中的第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 = {};
});
}