1

我有一个包含两部分的“卡片”列表。默认情况下,我只显示第一部分。

<div ng-repeat="card in cards">
    <div ng-click="displayEditView(card)">{{card.title}}</div>

    <div ng-show="card.displayEditView">
         <input type="text" ng-model="card.title">
    </div>
</div>

displayEditView 将 card.displayEditView 设置为 true(如果已经为 true,则为 false)。

但我实现了一个重新加载 $scope.cards 的 setInterval。当然,当这种情况发生时 card.displayEditView 不再存在,因此视图再次被隐藏。

知道如何在 $scope.cards 重新加载时保持 ng-show 的状态不变吗?

4

1 回答 1

1

每次获取新数据时都会覆盖cards列表的值,因此您为其保存视图的卡不再存在。

如果您希望实时更新,您需要维护当前列表并附加或删除卡片。

伪代码示例:

getCards().then(function(cards) {
  forEach(card in cards) {
    if ($scope.cards.indexOf(card) < 0) {
      // If something in the new list doesn't exist in the existing list, append it.
      // This way you don't overwrite the existing array.
      $scope.cards.push(card);
    }
  }
}); 
于 2013-07-18T16:18:51.047 回答