【发布时间】:2013-12-13 13:55:49
【问题描述】:
我有一个不同类型的元素列表。每个都有一个切换其可见性的切换。现在有两种方法可以隐藏元素,要么将其从 DOM 中分离出来,要么将可见性设置为隐藏。
据我了解,Angular 仍会更新隐藏元素,因此这可能会影响性能。这是真的?使用 jQuery,可以将元素从 DOM 中分离出来,然后在需要可见时再次附加它。但是这种方法在 Angular 中是否是一种好的做法?
阅读 Angular 文档和它的 API 给我的印象是 Angular 更喜欢在开始时声明所有模板/HTML,并且它们的内容通过控制器动态更改。因此,如果您想添加/删除元素,您将使用 ng-repeat 指令,然后通过从范围内的数组中删除元素,您可以从模板中添加/删除元素。这适用于相同类型的原始元素。但是,如果您有一个不同类型的元素列表,这将如何工作?
已编辑:
这里的一个例子是可以通过复选框提供的工具列表。在示例中,第一种方法有一个不能动态更改的静态元素列表。这意味着您需要提前知道哪些工具可用。
第二种方法在控制器中有一个列表,您可以在其中添加和删除工具,并在模板中使用ng-repeat 迭代该列表并创建工具。但是,我被困在这里,因为工具可以是按钮、文本字段、复选框甚至是复杂的 div。
我发现这里有一个model first 有点困难,因为这只是隐藏和显示可用控件而不是显示域模型的部分。
我认为的一个很好的例子是谷歌地图,您可以在其中隐藏或最小化地图上的各种控件。
【问题讨论】:
-
如果您提供一个小提琴哦,您想要实现的目标可能会有所帮助
-
你没想到
model first。您修改模型并让 Angular 管理 DOM 更新。创建演示,概述您正在尝试做的事情。非常不清楚different type的影响是什么。 -
我不想给出一个具体的例子,因为我想找到一种 Angular 方法来创建新元素,但我想每种情况都会有所不同。我添加了一个指向小提琴的链接,希望能说明我在寻找什么。
标签: javascript html angularjs