所有:如何合并范围变化看
我非常新的角度指令,我不知道我怎么能合并$一起看,例如:
如果我绘制的图表指示,无论是数据改变或宽度变化或高度变化将导致呈现,但是当init阶段,所有这三个的可一起改变,这导致图表呈现三次,但只有一个呈现所需
由于
所有:如何合并范围变化看
我非常新的角度指令,我不知道我怎么能合并$一起看,例如:
如果我绘制的图表指示,无论是数据改变或宽度变化或高度变化将导致呈现,但是当init阶段,所有这三个的可一起改变,这导致图表呈现三次,但只有一个呈现所需
由于
有一个看看lodash图书馆,特别是debounce
方法。有了它,你可以做这样的事情:
$scope.render =_.debounce($scope.oldRenderingMethod);
然后在每个事件处理程序:
_.defer($scope.render);
debounce
需要照顾比每x秒不执行更频繁的功能(看文档),而defer
可确保画布的渲染不会对UI响应性产生负面影响。
有两件事情:
你可以在你的手表功能检查,为新老值,看看是否未设置旧值。
$scope.$watch('myvariable', function (newVal, oldVal) {
if (oldVal && newVal !== oldVal) {
//the old value was defined (initialized)
//and the new one is different (changed)
}
}
您也可以accoomplish同样的事情lodash的延迟()通过在setTimeout的包裹你的行动。这两种方法实质上都是将操作推入队列中,以便在下一个摘要循环中运行。
$scope.$watch('myvariable', function (newVal, oldVal) {
if (newVal !== oldVal) {
setTimeout(function() {
//do stuff
}, 0); //you don't need to actually set the timer, it will still push to the next cycle
}
}
没有代码示例,这只是在你需要做什么是最好的猜测。