一尘不染

为什么在控制器中操纵DOM被认为是一个坏主意?

angularjs

许多人告诉我,在控制器中操作DOM是一件非常糟糕的事情,但这究竟是什么原因。它如何影响您正在制作的应用程序?有哪些最佳实践,以及如何实现?


阅读 222

收藏
2020-07-04

共1个答案

一尘不染

从技术上讲,控制器应该更小,更紧凑,并且不应使用DOM。控制器仅希望具有在事件上被调用的业务逻辑和绑定级别逻辑。

根据我的观点,“ 您不应该从控制器中操作DOM
”背后的原因是,这仅仅是因为关注点分离。如果您从控制器执行DOM操作,那么它将与您的控制器紧密耦合,并且那段代码将变得不可重用。因此,通过在指令中编写该代码,相同的代码可以轻松地成为可插拔和可重用的组件。您只需将指令标记/元素放在其他地方即可使用相同的DOM操作。

查看指令定义,然后您将分析它只是要与DOM一起使用,因为它在使用preLInk函数渲染它之前为DOM提供了一个控制器,并且还可以在postLink函数中后期渲染DOM

另外,指令使您可以使用指令元素,而无需对其进行编译,因为element已经使用jQLite它编译过了,它是angular中使用的较小版本的jQuery。此处无需选择器即可获取指令元素DOM。

2020-07-04