2014-03-06 92 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)的性能優勢將可以忽略不計。

相關問題