【问题标题】:Showing only a particular div in AngularJS在 AngularJS 中只显示一个特定的 div
【发布时间】:2017-11-27 20:49:00
【问题描述】:

所以我有 2 次这样的 ng 重复:

<div ng-repeat = "car in cars track by car" >
<div ng-repeat = "driver in drivers track by driver">

<div>
 <label>  {{driver}}    </label>
</div>

   <div>    <!-- div 3 -->
    {{car}} {{driver}}
   </div>

</div>
</div>

我希望当我点击某个标签时,最内部的 div (div 3) 只显示汽车和司机的特定组合。现在,当我单击标签时,它实际上会影响所有 div。例如,如果我单击驱动程序 1,那么它将显示具有驱动程序 1 的所有 divs3。基本上它会影响每辆车的所有驱动程序 1。我不想使用href。我试图为 div 3 提供一个特定的 id,并在我的控制器中激活该特定的 div;但无济于事。有什么意见吗?

详情: 基本上,布局将是 x 个 div,x 代表汽车的数量。所以假设我有 7 辆车。我将有 7 个 div 一个在另一个之上。每个 div 将有 4 个标签(如果我们有 4 个驱动程序)。所以 7divs 包含 4 个标签。 所以这 7 个 div 中的每一个都包含 4 个标签。

现在,当我单击一个驱动程序标签时,假设 div 1 (1 of 6);我想显示特定的内部 div3(div1.div3)而不显示驱动程序 1 的其他 6 个 div。所以我想能够说这辆车,驱动程序 1 有它或没有它。但现在,它会向我显示所有汽车(7 格)的驾驶员 1 的状态。它显示了所有内部 divs3。

<script>
$scope.cars = [ 'car0','car1', 'car2', 'car3', 'car4', 'car5', 'car6'];
$scope.drivers = [ 'driver0', 'driver1', 'driver2' , 'driver3']
</script>


<div0>
   'driver0'  'driver1' 'driver2' 'driver3'  
      <div 3>
      <div3>

</div0>
<div1>
   'driver0'  'driver1' 'driver2' 'driver3'  
    <div 3>
    <div3>
</div1>
<div2>
   'driver0'  'driver1' 'driver2' 'driver3'  
    <div 3>
    <div3>
</div2>
<div3>
   'driver0'  'driver1' 'driver2' 'driver3'  
    <div 3>
    <div3>
</div3>
<div4>
   'driver0'  'driver1' 'driver2' 'driver3'  
     <div 3>
     <div3>
</div4>
<div5>
   'driver0'  'driver1' 'driver2' 'driver3'  
    <div 3>
    <div3>
</div5>
<div6>
   'driver0'  'driver1' 'driver2' 'driver3'  
   <div 3>
   <div3>
</div6>


`div0`
`driver0 driver1 driver3 ....`
` -->shared space for content for drivers <---`
`div1`
`driver0 driver1 driver3 ....`
` -->shared space for content for drivers <---`

【问题讨论】:

  • 我并没有从解释中真正理解你的目标。我是否正确地假设当你点击一个司机时,你想显示与这个司机相关的所有汽车?
  • @TomNijs 好的,添加了一些信息
  • 汽车和司机是什么关系?是否有谁与哪些汽车相关的外键/数组/映射?
  • 我不认为这个数组是正确的。按照你的阵列,每个司机都有所有的车。我们需要更具体地设定您的目的。好吧,我会发布一个小提琴,请检查这是否与您的目的几乎相同。 jsfiddle.net/Canet/s9hrvbgf
  • 很抱歉我的建议并不完全符合您的目的。但我很高兴你有一个很好的解决方案。 :)

标签: html angularjs angularjs-ng-repeat


【解决方案1】:

angular.module('app', []).controller('ctrl', function($scope) {
  $scope.cars = ['car0', 'car1', 'car2', 'car3', 'car4', 'car5', 'car6'];
  $scope.drivers = ['driver0', 'driver1', 'driver2', 'driver3'];  
})
.driver {  
  cursor: pointer;
  margin-left: 15px;    
}
.content {
  margin-left: 30px;    
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">
</script>

<div ng-app='app' ng-controller='ctrl'>
  <div ng-repeat='car in cars' ng-init='temp={selected:""}'>
    {{car}}
    <div class='driver' ng-repeat='driver in drivers'>
      <span ng-click='temp.selected=driver'>{{driver}}</span>      
    </div>
    <div class='content' ng-show='temp.selected'>
        Some content for {{car}}-{{temp.selected}}
      </div>
    <br>
  </div>  
</div>

【讨论】:

  • 太好了,谢谢。一件事,我应该一直为每个 div 显示所有 4 个标签。从某种意义上说,如果我点击一个标签,它会显示它的内容,如果我点击另一个 div 的不同标签,它也会同时显示;因为他们是独立的。这就是为什么内部 div3 是一个独立的 div,正如您在我的代码中看到的那样。你可以编辑它吗?谢谢
  • 哦,太好了:)!! -哦,实际上,最后一个细节;每个 div div0, div1....div6 当时只能显示 1 个驱动的内容。所以我们可以同时看到所有 div 的内容,但每个 div 本身只能同时显示 1 个驱动程序。有意义吗?..如果你能解决它,我会选择你的答案作为答案。如果你不能,我仍然会。谢谢你!
  • 我不是很清楚你,现在每辆车的&lt;div&gt;已经可以显示所有包含的司机&lt;div&gt;s,而不仅仅是一个。
  • 是的,我希望每个 div 只能显示一辆车。让我们说 div0,如果我点击 driver0 它会显示它的内容,但是如果我点击 driver1,driver0 应该会消失,而 driver1 会显示它的内容。从某种意义上说,每个 div0、div1、div2 等...对于所有驱动程序只有一个视图。但是,所有 div 都可以同时显示它们各自的内容,就像您在此处所做的那样。所以如果我点击 div0.driver0 我也可以点击 div1.driver3 并查看其内容,而另一个 div0.driver0 仍在显示。
  • 实际上.. div 中每个驱动程序的内容都应该包含在同一个空间中.. 现在它们确实单独出现,但它们不共享下面各自的内部 div 3。说得通?考虑标签。它就像 div0 是一个带有标签的浏览器,但它们都在下面的同一空间中显示它们的内容..
猜你喜欢
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多