Ng-repeat 切换,初始状态显示 first-child 并隐藏其余

Ng-repeat toggle, initial state shows first-child and hides the rest

我目前正在完成切换 collection 中项目的可见性,如下所示:

.terms ng-repeat="term in terms" 
  h1 ng-click="termOpen = !termOpen"
    | {{term.name}}

  .term ng-show="termOpen"
    p Content blah blah

.term 的默认状态是隐藏的。单击标题时,会显示 .term 的内容。这工作正常,除了我希望第一个元素的初始状态可见。

我尝试了 ng-show = '"facetOpen" || "$first"',但后来我无法切换第一个词以使其隐藏。

尝试使用 ng-init

h1 ng-click="termOpen = !termOpen" ng-init="termOpen=$first"

除了 charlietfl 的回答之外,还有更多内容:

  1. 因为,我认为您只想切换一个元素而不是所有元素,您必须将其修改为:

    h1 ng-click="term.termOpen = !term.termOpen" ng-init="term.termOpen=$first"
    

现在,在这一点上,将发生的是,最初该项目的 termOpen 属性 将是未定义的(如此错误,除了第一个),下次点击它将是!未定义如此真实,在再次点击它是!真那么假。 如果您使用相同的变量,就像您所做的那样,那么单击任何一个部分都会打开所有部分,我认为您不想这样做。

  1. 你在做:

    ng-show = '"facetOpen" || "$first"'
    

这将始终为真,因为它们都是字符串(你将它们放在双引号中,angular 将它们视为字符串),它应该是:

ng-show = 'facetOpen || $first'

其中 facetOpen 是一个范围变量。此外,它无法正常工作,因为第一项将始终保持打开状态,因为它的条件始终为真。

您可能还需要考虑以下两件事。