Javascript ng repeat内的动态ng开关

Javascript ng repeat内的动态ng开关,javascript,angularjs,ng-repeat,ng-switch,Javascript,Angularjs,Ng Repeat,Ng Switch,我正在尝试创建一个基于动态对象数组的开关 例如: <div ng-switch on="currentItem"> <div ng-repeat="item in myItems" ng-switch-when="item.name"> <p>{{item.name}}</p> <button ng-click="nextItem(item)">Next Item</button>

我正在尝试创建一个基于动态对象数组的开关

例如:

  <div ng-switch on="currentItem">
    <div ng-repeat="item in myItems" ng-switch-when="item.name">
      <p>{{item.name}}</p>
      <button ng-click="nextItem(item)">Next Item</button>
    </div>
  </div>

{{item.name}

下一项
然后在我的控制器里

  $scope.myItems = [{
      "name": "one"
    }, {
      "name": "two"
    }]
    // Default first item
  $scope.currentItem = $scope.myItems[0].name;

  $scope.nextItem = function(med) {
    for (var i = 0; i < $scope.myItems.length; i++) {
      if ($scope.currentItem === $scope.myItems[i].name) {
        if ($scope.myItems[i + 1] !== undefined) {
          $scope.currentItem = $scope.myItems[i + 1].name
        }
      }
    }
  }
$scope.myItems=[{
“名称”:“一”
}, {
“姓名”:“两个”
}]
//默认第一项
$scope.currentItem=$scope.myItems[0]。名称;
$scope.nextItem=函数(med){
对于(变量i=0;i<$scope.myItems.length;i++){
如果($scope.currentItem==$scope.myItems[i].name){
if($scope.myItems[i+1]!==未定义){
$scope.currentItem=$scope.myItems[i+1]。名称
}
}
}
}
基本上,dom应该为每个项呈现一个div,当用户单击Next Item按钮时,currentItem应该更新,开关应该基于此触发

我没有看到我应该看到的第一个结果(没有呈现任何结果)。任何帮助都将不胜感激


Plunk:

我已经用叉子叉了你的Plunk:

基本上,您没有以良好的方式使用
ngSwitch

只需使用ngIf:

<div ng-repeat="item in myItems">
  <div ng-if="currentItem == item.name">
    <p>{{item.name}}</p>
    <button ng-click="nextItem(item)">Next Item</button>
  </div>
</div>

{{item.name}

下一项
我已经用叉子叉了你的叉子:

与Ignacio Villaverde类似,但我更新了获取nextItem()的方式

您可能应该在currentItem中保留对整个对象的引用,而不仅仅是名称:

<div ng-repeat="item in myItems">
<div ng-if="item == currentItem">
  <p>{{item.name}}</p>
  <button ng-click="nextItem(item)">Next Item</button>
</div>

{{item.name}

下一项


简单多了

这工作正常。谢谢你。我签出了呈现给dom的内容,并且item.name没有使用开关呈现,因此它不能被允许。再次感谢你的帮助。
<div ng-repeat="item in myItems">
<div ng-if="item == currentItem">
  <p>{{item.name}}</p>
  <button ng-click="nextItem(item)">Next Item</button>
</div>