创建可重用的UI组件

时间:2014-07-05 10:04:56

标签: angularjs

在jQuery中,您可以创建可重用的UI组件。在AngularJS中,我理解使用Directives就是这样做的等价方式。 Directive语法包含一个Link属性,您可以在其中操作DOM。但这是我感到困惑的地方。 AngularJS旨在避免操纵DOM,因为AngularJS在内部操纵DOM,那你为什么要这样做呢?有没有更好的方法来实现这一点,而不必实际操纵DOM?

3 个答案:

答案 0 :(得分:3)

你在哪里知道所有DOM操作都是坏事?如果DOM没有被操纵,怎么会得到任何东西?在控制器在Angular的上下文之外混淆DOM是一个坏主意,但是在您插入Angular和can的指令中安全地进行DOM更改而不会破坏任何内容。

你基本上是在不操纵DOM的情况下如何操纵DOM,这没有任何意义。

继续在链接功能中做你的东西,它完全没问题。

答案 1 :(得分:0)

在某些时候,您将不得不以某种方式参与操纵DOM,但在95%的情况下,您可以坚持使用angular的内置指令,例如ng-if,ng-hide / show,ng -switch,ng-repeat等...

但是这些都是指令,所以angular不是“内部”操纵DOM,它是通过指令来完成的,正如它的意图所做的那样......

请记住,在您的指令模板中,您可以使用其他指令,因此您的指令可以专注于它自己的任务。

答案 2 :(得分:0)

使用$ rootScope中的$ new(isolate)方法创建可重用的UI组件。将isolate设置为true。不要操纵UI组件之外的任何内容:

  

如果为true,则范围不会原型继承   父范围。范围是孤立的,因为它看不到父范围   属性。在创建窗口小部件时,窗口小部件不是很有用   意外地读到了父州。

https://docs.angularjs.org/api/ng/type/$rootScope.Scope