【发布时间】:2015-03-08 03:20:01
【问题描述】:
我有一个显示事物列表的 Angular 应用程序
<div ng-repeat="thing in things" regular-thing>
使用 ng-repeat 实现,它为我列表中的每件事显示一个 regularThing 指令。
实际上比这要复杂一点:
<div ng-repeat-start="thing in things">
<div ng-if="$first || thing.isSpecial" special-thing></div>
<div ng-if="!$first && !thing.isSpecial" regular-thing></div>
</div>
<div ng-repeat-end></div>
我对列表中的第一件事使用不同的指令,也对任何“特殊”的事情使用不同的指令。出于我们的目的,当用户单击某个事物时,它会变得“特殊”——因此,当他们滚动列表时,他们可以单击某个事物以使其显示在不同的(更广泛的)模板中。
我现在拥有它的方式对我来说是错误的。一方面,我真的不需要两个不同的指令——只是不同的模板。逻辑是相同的,specialThing 只是多了一点。另一方面,出于纯粹与视图相关的原因,我在 data(即thing.isSpecial)上切换了一个属性,这让我有点死心了。
所以我的问题是:我不应该为此而死在内心深处吗?没有更干净、更“有角度”的方式来处理这个问题(即在指令模板之间切换)吗?
【问题讨论】:
-
根据模板的差异,如果您在单击某个组件时对某些 DOM 元素使用显示/隐藏功能可能会更好。如果您可以向我们展示模板,可能会更容易看出这是否是一个选项。
-
@Eyal - 这是一个很好的建议,谢谢。不幸的是,这是我已经考虑过并决定反对的,因为差异很大,有太多的表演、隐藏和切换,最终感觉像上面描述的那样更干净
-
这里解决了一个类似的问题,可能会给你一些想法:stackoverflow.com/questions/22448143/…我希望对你有帮助。如果我想到其他事情,我会告诉你:)
标签: javascript angularjs