我的指令有一个模板,例如:
<div ng-show="isVisible()"> ... </div>
我已经更改了isVisible,所以它现在只返回true并执行console.log。
此指令在我的页面上包含一次,但日志发生了50次以上。我想知道什么代码调用isVisible很多次。有没有办法追踪调用函数的内容? ACTUAL堆栈跟踪完全没用,因为angular似乎隐藏了所有内容。 是否有一些工具可以找出非角度代码触发函数调用的内容。
在其他一些情况下,我有数据更改,我无法找到它正在改变的地方[它实际上不是我的代码],因为原始代码是有角度的,我不能只使用堆栈跟踪,或使用手表或做我正常的调试类型。
这是指令:
require('app').directive('kmFormLanguages', ["$q", function ($q)
{
return {
restrict: 'EAC',
template: '<span ng-show="isVisible()"><span km-select multiple ng-model="binding" binding-type="string" placeholder="Available Languages" items="locales|orderBy:\'name\'" minimum="1"></span></span>',
transclude: true,
scope: {
binding : '=ngModel',
},
controller: ["$scope", "IStorage", "editFormUtility", function ($scope, storage, editFormUtility) {
$scope.locales = [
{identifier:"ar", name:"Arabic" },
{identifier:"en", name:"English" },
{identifier:"es", name:"Spanish" },
{identifier:"fr", name:"French" },
{identifier:"ru", name:"Russian" },
{identifier:"zh", name:"Chinese" }
];
$scope.isVisible = function() {
console.log('binding: ', $scope.binding);
debugger;
return $scope.binding!==undefined && $scope.binding!==null;
}
}]
};
}])
和使用它的html(没有显示祖先的角度控件):
<div ng-controller="editMeasure">
[...]
<div ng-show="!isLoading() && status!='hidden'">
[...]
<span km-form-languages ng-model="document.header.languages"></span>
答案 0 :(得分:1)
很难仅从文字中说出来。如果您可以发布示例代码,则可以给出更准确的答案。
但是根据你所描述的,似乎你的函数被调用为angular js
的一部分$digest or $compile
周期。