簡體   English   中英

保持“$ watch”功能遠離控制器的最佳做法

[英]Best practice in keeping `$watch` functions away from your controllers

例如,我試圖找到一些關於將$watch函數從控制器移動到工廠的最佳實踐的好例子。

我發現實際上並沒有一致意見最好做什么。 我已經看到了將$rootScope注入工廠並在那里$watch價值變化的例子。

另一個建議是盡可能避免使用它們,並在元素本身上使用ngChange ,例如:

<div ng-model="foo.bar" ng-change="updateValue(foo.bar)"></div>

你提議的方式是什么? 自從我開始學習AngularJS以來,我一直在我的控制器中使用$watch es,但現在我想采用最佳實踐方法,盡量使控制器保持盡可能薄。

我想在哪里放置$watch取決於用例場景。 關注$watch最重要的一點是不要在句柄功能中做任何艱苦的工作,特別是如果你正在觀看的內容正在發生很大變化; 這會嚴重阻礙你的表現。 並確保在您的句柄功能中,您不會更改已經被監視的其他內容,因為這將導致一系列更改更新。

如果您確定您正在觀看的變量只能從一個地方更改,那么最好使用ng-change而不是$watch因為您已經知道它變更的地方。

通常不使用不必要的對象填充rootScope ,但如果你正在觀察整個應用程序中使用的某些變量,例如當前用戶的屬性,我想將$watch表達式放入$rootScope有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM