【发布时间】:2016-02-22 07:46:00
【问题描述】:
我想创建一个指令,它接受一个字符串数组,并将它们组织在一个表中,每行有 4 个字符串。
例如,数组['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] 将呈现为:
a b c d
e f g h
为此,我可以轻松编写一个link 函数,手动操作 DOM(jQuery 样式)并呈现此表。
但这感觉不对,因为我们已经有诸如ng-repeat 之类的指令可以完成一半的工作。我想使用可以提供帮助的现有东西,并且只对新功能进行编码。
我怎样才能做到这一点?
【问题讨论】:
-
您的问题无法回答。没有“正确的方法”来完成每一项任务,而排除所有其他方法;完成任务有好方法,也有完成任务的坏方法。在您的特定情况下,可以显示另一种完成任务的好方法,但这并不是唯一正确的方法,也不是您应该完成所有类似任务的方法。因此,你应该问的是你说过不想让任何人回答的一件事。
-
有两种常见的处理方式,主要取决于您是否使用响应式框架。 stackoverflow.com/questions/27211799/… 有几个例子;一种方法是使用响应式重置,而根本不尝试控制 DOM。另一种方法是将数据分块成一个数组数组,并使用两个
ng-repeat将外部数组迭代为行,将内部数组迭代为列。 -
你是对的,尽管你认为操纵 DOM 并不是真正的角度方式。
-
@Claies 关于第二个选项:
ng-repeat会进入指令对象的template字段,还是进入页面的实际模板? -
如果你正在编写一个可重用的指令,你可以把重复的部分放在模板中。您也可以不使用指令,而是编写一个执行数据分离并将数据保存在控制器中的服务,这将为您提供更多的输出灵活性,特别是如果您希望内部数组遍历多个数据字段。
标签: javascript angularjs web frontend