我在一个指令中有多个不同的监视语句,它们监视scope
并在不同事件上重新呈现d3指令(窗口调整大小,表单提交等等)
window.onresize = function() {
scope.$apply();
};
// Call render function on window resize
scope.$watch(function() {
return angular.element($window)[0].innerWidth;
}, function() {
scope.render(scope.data);
});
// Watch for data changes and re-render
scope.$watch('data', function() {
return scope.render(scope.data);
}, true);
问题是,我最终为同一事件多次调用渲染。有什么办法可以将这三种不同的$watches
合并成一个更简洁的结构吗?我猜测看scope
也会看data
的{{1}}属性,但显然不是!这是为什么?
答案 0 :(得分:3)
可能不是最佳解决方案,但它可能有所帮助。
underscorejs'throttle
在执行函数之间占用一个函数和最短时间,并返回一个函数,该函数每隔wait
毫秒才会调用最多指定的函数。
_.throttle(func, wait, [options])