【问题标题】:Ng-repeat toggle, initial state shows first-child and hides the restNg-repeat 切换,初始状态显示第一个孩子并隐藏其余
【发布时间】:2015-07-10 21:06:33
【问题描述】:

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

.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"',但我无法切换第一个术语以使其隐藏。

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat ng-show


    【解决方案1】:

    尝试使用ng-init

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

    【讨论】:

    • 是的!这正是我一直在寻找的,在九分钟内我可以接受这个答案是正确的,我一定会的。
    【解决方案2】:

    除了 charlietfl 的回答之外,还有更多的东西:

    1. 因为,我认为您只想在单击某个部分时切换其中一个元素而不是所有元素,您必须将其修改为:

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

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

    1. 你在做什么:

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

    这总是正确的,因为它们都是字符串(你把它们放在双引号中,角度认为它们是字符串),它应该是:

    ng-show = 'facetOpen || $first'
    

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

    这是您可能需要考虑的另外两件事。

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 2013-11-09
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多