合并多个Angular范围监视语句

时间:2014-06-26 18:03:05

标签: javascript angularjs d3.js

我在一个指令中有多个不同的监视语句,它们监视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}}属性,但显然不是!这是为什么?

1 个答案:

答案 0 :(得分:3)

可能不是最佳解决方案,但它可能有所帮助。

underscorejs'throttle在执行函数之间占用一个函数和最短时间,并返回一个函数,该函数每隔wait毫秒才会调用最多指定的函数。

_.throttle(func, wait, [options])

info