角度ng重复元素。在视图更改时重置切换开关

时间:2017-07-10 11:12:48

标签: html angularjs angularjs-ng-repeat html-lists

我有一个ng-repeat生成的列表,它迭代一个对象数组。 对于创建的每个元素,我都有一个用于切换showDetails-body的ng-click。 像这样:

<li class="list-group-item" ng-repeat-start="order in orderList " 
     ng-click="order.showDetails = !order.showDetails"

当我改变整个窗口的状态(即更改视图)时,如何将该特定元素切换为false?问题是带有详细信息的list-elements“body”显示我在应用程序中更改视图的时间。我需要重置该特定元素。可能吗?

2 个答案:

答案 0 :(得分:1)

使用 ng-repeat 代替 ng-repeat-start

<body ng-controller="MainCtrl">
 <li class="list-group-item" ng-repeat="order in orderList " 
  ng-click="order.showDetails = !order.showDetails">{{order.name}}
  {{order.showDetails}}</li>
</body>

让coltroller

app.controller('MainCtrl', function($scope) {
      $scope.orderList = [{"name":"John","showDetails":false},
           {"name":"Doe","showDetails":false}
      ];
});

工作人员https://plnkr.co/edit/Yc5zU7VRP41qWQfP0IsC?p=preview

答案 1 :(得分:0)

 $scope.collapseListItem = function(){
        $scope.orderList.forEach(function(element) {
            element.showDetails=false;
        });
    }

这解决了我的问题。在更改视图时,我在视图中使用ng-click()调用此函数。