繁体   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