根据问题How to limit angular digest to only effect/re-render one component/directive
中的答案,我有以下的plunkerJS代码(从原始问题中省略控制器)
app.directive('ngClock', function($timeout){
return {
restrict: 'E',
template:'<span>{{date}}</span>',
controller: function($scope, $element) {
$scope.date = new Date();
setInterval( function() {
$scope.date = new Date();
$scope.$digest();
}, 1000);
}
}
});
HTML
<body ng-controller="MainCtrl">
<p ng-controller="ChildCtrl">Interval counter: {{ date }}</p>
<ng-clock></ng-clock>
<!-- pretend this is our heavy calculation that we don't want to occur often -->
<p>Heavy calc: {{ calc() }}</p>
</body>
对指令范围的$ digest的调用并不意味着刷新&#39;整个页面。但确实如此。
删除<ng-clock>
并只留下基于控制器的普通时钟,工作得很好。所以基本上,控制器内的$ scope。$ digest正确地保留在它的范围内,但由于某种原因,指令控制器内的$ digest调用超出了它的范围。
主要使用Angular解决方案,是否可以获取时钟小部件或其他任何频繁更新指令,以便不会导致整页摘要?
答案 0 :(得分:0)