我当前的Controllers $scope具有以下特征:$watch和事件处理程序。

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

一种)

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


b)

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


我是否应该担心创建的modalScope也会观看这些表达式和事件?我应该注意其他方面吗?

最佳答案

选项a)仅复制一次该值,并且不使其与$scope保持同步,因此可能会导致令人困惑的错误。如果您的模态具有较深的作用域层次结构,那么在某些情况下,选项a)可能会给您带来很小的性能优势(在$broadcast上调用$scope表示它需要覆盖较小的作用域树),但总的来说,会说选项b)是可行的方法。

除非您仅$watch特定范围,否则您的$digest es不会真正受益于范围的位置。

编辑:我看到您的模态相当轻,在这种情况下,肯定与选项b)一起使用,a)的性能优势将微不足道。

10-04 15:20