$ rootScope的表现。$ new vs. $ scope。$ new

时间:2014-03-06 12:58:59

标签: javascript performance angularjs

我当前的控制器$scope有点$watch和事件处理程序。

有一点我需要为模态创建一个新的作用域,它没有自己的控制器,因为它非常简单。它仍然需要当前$scope的属性。我想知道以下哪种解决方案更好,为什么?

A)

var modalScope = $rootScope.$new();
modalScope.neededValue = $scope.neededValue;

b)中

var modalScope = $scope.$new();
// modalScope.neededValue already there

我是否应该担心创建的modalScope还会关注那些表情和事件?我应该注意的任何其他方面?

1 个答案:

答案 0 :(得分:1)

选项a)仅复制值一次,并且不会使其与$scope保持同步,因此可能会导致混乱的错误。如果您的模态具有深层范围层次结构,那么在某些情况下,选项a)可能会给您带来非常轻微的性能优势(在$broadcast上调用$scope意味着它需要覆盖较小的范围树),但是总而言之,我会说选项b)是要走的路。

除非$watch特定范围,否则$digest es不会从范围的位置中获益。

编辑:我认为你的模态很轻,在这种情况下,绝对选择b),a)的性能优势可以忽略不计。