我有一個控制器,其中$ scope對象用於存儲只在本地在同一個控制器內使用的方法和值。有很多這樣的事情發生:
$scope.foo = 'something';
$scope.bar = 'something else';
...等等。視圖中沒有使用這些值。我的問題是污染$ scope對象影響性能?清理它是否是一個好主意,以便只有視圖所需的值和方法才包含在$ scope對象中?
我有一個控制器,其中$ scope對象用於存儲只在本地在同一個控制器內使用的方法和值。有很多這樣的事情發生:
$scope.foo = 'something';
$scope.bar = 'something else';
...等等。視圖中沒有使用這些值。我的問題是污染$ scope對象影響性能?清理它是否是一個好主意,以便只有視圖所需的值和方法才包含在$ scope對象中?
是的,污染$scope
確實會影響性能,但它取決於您的示波器有多個頻繁更改的觀察者,這會產生更多的間接費用。請參閱this answer這已經覆蓋了同樣的觀點
爲了避免這種情況我建議你做的很好的代碼重新分解
處理在控制器中的所有邏輯需要的時候做,否則通過充分利用獨立的邏輯每個組件。
service
/factory
/provider
其在多個地方使用,因此,這將是可共享的。constant
/value
$scope
它自身那麼邏輯轉移到通用控制器相同的邏輯。當使用$controller
注射器需要,你可以在你的電流控制器範圍注入另請參閱Understanding Of Scope的使用範圍
謝謝你的迴應。您提供的包含「理解範圍」文章的鏈接非常有幫助。 – Dustin
@Dustin很高興幫助你,謝謝:-) –
哼的清醒的認識,要看到一個例子控制器會很有意思。在角度上,控制器更像視圖模型,因此通常它們不會包含很多視圖中未使用的視圖。您可能想要將某些邏輯重構爲服務?看看[角型指南](https://github.com/johnpapa/angular-styleguide),也考慮使用controllerAs語法,而不是使用$ scope alltogether(更多關於指南):) – JimL
添加一些東西$範圍不會創建一個通常出現性能問題的觀察者,因此它不會顯着影響性能。 – rob
這當然是無關緊要的,但是爲什麼當視圖中不使用值時,你會將值放在範圍中? –