2014-03-06 51 views
1

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

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

一)

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

B)

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

我应该担心的是,创建modalScope也会看这些表达式和事件?我应该知道的其他方面?

回答

1

选项a)只复制一次该值,并且不会与$scope保持同步,因此可能导致令人困惑的错误。如果你的模态具有较深的作用域层次结构,那么在某些情况下,选项a)可能会给你一个非常小的性能优势(在$scope上调用$broadcast意味着它需要覆盖一个较小的作用域树),但总而言之, b)是要走的路。

您的$watch es将不会真正受益于范围的位置,除非您只是在一个特定的范围$digest

编辑:我看到你的模态是相当轻的,在这种情况下,肯定会选择b),从a)的性能优势将可以忽略不计。

相关问题