2015-05-13 39 views
2

我有一個控制器,其中$ scope對象用於存儲只在本地在同一個控制器內使用的方法和值。有很多這樣的事情發生:

$scope.foo = 'something'; 
$scope.bar = 'something else'; 

...等等。視圖中沒有使用這些值。我的問題是污染$ scope對象影響性能?清理它是否是一個好主意,以便只有視圖所需的值和方法才包含在$ scope對象中?

+0

哼的清醒的認識,要看到一個例子控制器會很有意思。在角度上,控制器更像視圖模型,因此通常它們不會包含很多視圖中未使用的視圖。您可能想要將某些邏輯重構爲服務?看看[角型指南](https://github.com/johnpapa/angular-styleguide),也考慮使用controllerAs語法,而不是使用$ scope alltogether(更多關於指南):) – JimL

+0

添加一些東西$範圍不會創建一個通常出現性能問題的觀察者,因此它不會顯着影響性能。 – rob

+0

這當然是無關緊要的,但是爲什麼當視圖中不使用值時,你會將值放在範圍中? –

回答

2

是的,污染$scope確實會影響性能,但它取決於您的示波器有多個頻繁更改的觀察者,這會產生更多的間接費用。請參閱this answer這已經覆蓋了同樣的觀點

爲了避免這種情況我建議你做的很好的代碼重新分解

處理在控制器中的所有邏輯需要的時候做,否則通過充分利用獨立的邏輯每個組件。

  1. 移動常用的方法(邏輯)到service/factory/provider其在多個地方使用,因此,這將是可共享的。
  2. ,如果某個值是固定的,他們是不會改變然後將它們移到constant/value
  3. 每當你覺得你有哪些需要被保持在$scope它自身那麼邏輯轉移到通用控制器相同的邏輯。當使用$controller注射器

需要,你可以在你的電流控制器範圍注入另請參閱Understanding Of Scope的使用範圍

+1

謝謝你的迴應。您提供的包含「理解範圍」文章的鏈接非常有幫助。 – Dustin

+0

@Dustin很高興幫助你,謝謝:-) –