2016-06-21 54 views
0

所有:如何合并范围变化看

我非常新的角度指令,我不知道我怎么能合并$一起看,例如:

如果我绘制的图表指示,无论是数据改变或宽度变化或高度变化将导致呈现,但是当init阶段,所有这三个的可一起改变,这导致图表呈现三次,但只有一个呈现所需

由于

回答

0

有一个看看lodash图书馆,特别是debounce方法。有了它,你可以做这样的事情:

$scope.render =_.debounce($scope.oldRenderingMethod); 

然后在每个事件处理程序:

_.defer($scope.render); 

debounce需要照顾比每x秒不执行更频繁的功能(看文档),而defer可确保画布的渲染不会对UI响应性产生负面影响。

0

有两件事情:

你可以在你的手表功能检查,为新老值,看看是否未设置旧值。

$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 
    } 
} 

没有代码示例,这只是在你需要做什么是最好的猜测。