我有不同类型的元素列表。每个都有一个切换,切换其可见性。现在有两种方法可以隐藏元素,或者将其从DOM中分离出来,或者将可见性设置为隐藏。
据我所知,Angular仍会更新隐藏元素,因此这可能会影响性能。这是真的?使用jQuery,可以从DOM中分离元素,然后在需要可见时再次附加它。但这种方法在Angular中是否也是一种很好的做法?
通过阅读Angular文档及其API,我给人的印象是Angular更喜欢在开始时声明所有模板/ HTML,并且使用控制器动态更改其内容。因此,如果要添加/删除元素,则使用ng-repeat
指令,然后通过从作用域中的数组中删除元素,可以在模板中添加/删除元素。这适用于相同类型的原始元素。但是,如果您有不同类型的元素列表,这是如何工作的?
编辑:
此处的示例是可以通过复选框使用的工具列表。在该示例中,第一种方法具有静态的元素列表,其不能动态地改变。这意味着您需要事先知道哪些工具可用。
第二种方法在控制器中有一个列表,您可以在其中添加和删除工具,在模板中使用ng-repeat
迭代该列表并创建工具。但是,我被困在这里,因为工具可以是按钮,文本字段,复选框甚至是复杂的div。
我觉得这里有一个model first
有点困难,因为这只是隐藏和显示可用控件的一部分,而不是显示域模型。
我正在考虑的一个很好的例子是谷歌地图,您可以在其中隐藏或最小化地图上的各种控件。
答案 0 :(得分:0)
您可能需要熟悉ng-switch
directive。 ng-switch
中的非活动项目完全取消了DOM,而不是ng-hide
或ng-show
,它只是将CSS样式设置为显示或隐藏。