Javascript Angular.js在使用d3.layout.partition时给出最大调用堆栈大小错误
我已经创建了一个angularjs指令,它创建了一个d3日暴图。问题是我在chrome中不断得到最大的调用堆栈错误,在firefox中得到过多的递归错误。我已经跟踪到函数d3.layout.partition的问题。现在,这是d3.js提供的一个函数,用于插入值以创建sunburst图表或任何层次结构图表。我目前不知道如何解决这个问题。如有任何建议,将不胜感激 谢谢 铬误差 火狐错误Javascript Angular.js在使用d3.layout.partition时给出最大调用堆栈大小错误,javascript,angularjs,d3.js,Javascript,Angularjs,D3.js,我已经创建了一个angularjs指令,它创建了一个d3日暴图。问题是我在chrome中不断得到最大的调用堆栈错误,在firefox中得到过多的递归错误。我已经跟踪到函数d3.layout.partition的问题。现在,这是d3.js提供的一个函数,用于插入值以创建sunburst图表或任何层次结构图表。我目前不知道如何解决这个问题。如有任何建议,将不胜感激 谢谢 铬误差 火狐错误 var partition = d3.layout.partition() .chi
var partition = d3.layout.partition()
.children(function(d){ return d.values; })
.value(function(d) { console.log(d); return d.count; });
var root = d3.nest()
.key(function(k){ return k.key})
.entries(d);
root = {key:'All',values:root};
console.log(partition.nodes(root))
partition.nodesroot导致递归错误虽然我无法真正说出问题的原因,因为您没有显示足够的代码,但我过去经常遇到此问题,但我通过以下方法解决了此问题 将d3代码放入控制器而不是指令 如果您决定在指令中包含d3代码,请在第一次监视之后删除监视程序。要做到这一点,你可以从 原因:
虽然有很多教程显示将d3代码放入指令中,因为它们操作DOM,但我个人认为,在控制器中放入d3代码可能更合适,因为我仍然严重依赖d3而不是angularjs来操作DOM。当然,我不能百分之百肯定,因为我不久前才开始使用AngularJS。也许一个简单的例子可以更好地解释它。我用截图和代码片段编辑了这个问题,我怀疑digestTtl可能是原因,默认设置为10。请稍等,我已尝试将digestTtl设置为高数值。你能在小提琴上或别的什么地方准备好整个装置吗?我可以在那里看看。
var unbindWatcher = $scope.$watch(
"clickCount",
function( newClickCount ) {
console.log( "Watching click count." );
if ( newClickCount >= 5 ) {
$scope.isShowingFeedback = true;
unbindWatcher(); }
}
});