【发布时间】:2015-12-02 08:22:32
【问题描述】:
<div>
<ul id="teachers">
<li ng-repeat></li>
</ul>
<ul id="students">
<li ng-repeat></li>
</ul>
</div>
我有两个 ul 元素和动态数据。例如:
[
{
name: 'Jack'
status: 'teacher'
},
{
name: 'Angelina'
status: 'teacher'
},
{
name: 'Maya'
status: 'student'
},
{
name: 'Kate'
status: 'teacher'
},
{
name: 'Margaret'
status: 'student'
}
]
我想为 ng-repeat 编写一些自定义指令,它将为学生和教师生成列表,用于不同的 ul。
如何在某些条件下编写指令,在正确的 ul 中重复 li?
是的,我可以过滤我的数据并为学生和教师生成两个数组,而不是独立重复这些。 但是,我不喜欢这种方式。如何编写一个自定义指令来确定在哪里重复当前对象?
更新
好吧,我是 Angular 新手,所以我想,会有一些简单的技巧,像这样:
if(status === 'something')
use this template
else
use this template
所以,有了你的答案,我可以写出我想要的条件。很抱歉,这是个愚蠢的决定。
所以我的实际情况是:
我有面包屑数据和主容器,其宽度等于 500 像素。 我想在这个容器中重复 li 并且我希望我的 li 总是内联的。
如果我的数据会很大,或者某些标题会很大并且我的 ul 宽度会比我的容器大,一些 li 元素将被丢弃在下面。
因此,我有两个 ul 元素和 lis,它们没有我想在第二个 ul 中插入的空间,这将被隐藏,点击某些东西后我会显示这个 ul
【问题讨论】:
-
有可能,但这不是正确的做法。
-
@dfsq 为什么?你能告诉我更多吗?正确的方法是什么?
-
指令不应该做出数据决定,就像你传递数组,它会从中过滤一些东西,使用这个但跳过那个。数据操作不是表示层的一部分。正确的方法是从控制器传递必要的数据,该指令将使用该指令。在您的情况下,您将需要简单的 ngRepeat。
-
您可以在指令的模板中实现
ng-repeat。 stackoverflow.com/questions/16646607/….
标签: javascript html angularjs