我当前的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)的性能优势将微不足道。