AngularJS ng-repeat指令在更新数据父$ scope后丢失数据

时间:2015-05-20 10:12:10

标签: javascript angularjs templates notifications

我有一个ng-repeat生成的通知页面,如下所示:notifications

列表生成如下:

<div id="notifications" class="page_content">
  <div class="notification center" notification-view notification="notification" providers="notifications.providers" ng-repeat="notification in notificationsObjects">
  </div>

在用户完成通知(并在数据库中更新数据)之后,我通过删除已完成的通知来更新notificationsObjects数组。我使用以下函数执行此操作:

$scope.removeNotificationFromNotificationList = function(notification){
  for(var i = 0; i<$scope.notificationsObjects.length; i++){
    if($scope.notificationsObjects[i].id == notification.id){
      var indexToRemove = $scope.notificationsObjects.indexOf($scope.notificationsObjects[i]);
      var updatedArray = $scope.notificationsObjects;
        updatedArray.splice(indexToRemove, 1);
      $scope.notificationsObjects = updatedArray;
    }
  }
}

但是在更新数组后,虽然数据仍然可用,但仍会发生这种情况: notifications2 2个数组(更新前后)看起来完全符合我的预期,但由于某种原因,单个通知的指令不再具有通知对象。这些是两个notificationsObjects数组(在删除完成的通知之前和之后): notifications data

我想通过重新计算通知并重置新的$ scope.notificationsObjects可以解决我的问题,但确实如此,但它重新加载了我的整个DOM,我不想这样做。我只是希望已完成的通知从数组中消失(因此,将其从DOM中删除)。有没有人知道导致这个问题的原因,或者有没有人有更好的解决方案来解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我现在解决了,但没有找到原因。我注意到单个通知指令中的一些变量没有在$ scope上设置。即使它们不依赖于变化,我将它们与$ scope相结合,问题也解决了。