保持“$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
,最重要的是不要在handle函数内部做任何艰苦的工作,尤其是当你正在观看的内容发生很大变化时;那会严重影响你的表现。请确保在您的句柄函数中,您不会更改其他已经被关注的内容,因为这将导致一连串的更改更新。
如果你确信你正在观察的变量只能从一个地方更改,那么最好使用ng-change
而不是$watch
,因为你已经知道它更改的地方。
通常情况下,最好不要用不必要的对象填充rootScope
,但如果您正在关注整个应用程序中使用的一些变量,例如当前用户的属性,我想将$watch
表达式放入$rootScope
是有意义的。
相关文章:
- 在控制器之间传递变量的最佳方式
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 木偶控制器最佳实践
- 使用UI路由器实现控制器A的最佳实践方法
- 将变量传递给AngularJS控制器,最佳实践
- 将特性插入到角度控制器中阵列中的对象中的最佳方式
- 更新视图和控制器之间的角度重复数据值的最佳方式是什么
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 将JSON从PHP控制器传递到AngularJS控制器的最佳方式
- 单元测试AngularJS控制器,同时遵循最佳实践
- 分离AngularJs控制器代码的最佳方法
- 在不同控制器之间共享数据的最佳角度方式
- 在 Javascript 中访问控制器变量的最佳方法是什么?
- 在Javascript中添加由Rails控制器红色数据的最佳方法是什么?
- 使用渲染控制器隐藏/显示多个表面的最佳方法
- AngularJS 控制器功能最佳实践
- 从控制器调用指令中函数的最佳方法是什么
- EmberJS:基于另一个属性重新加载控制器模型的最佳方法
- Rails 4 - 最佳实践 - 如何显示包含来自不同控制器的数据的视图
- Ext JS 4.2.1装载控制器-最佳实践