在AngularJS中实现像Undo一样的Amazon Wishlist

时间:2014-05-15 01:46:56

标签: javascript angularjs user-experience

我正在考虑实施一个"亚马逊愿望清单"撤消我的应用的功能。

我的意思是...... Before

  

然后点击“删除项目”

After

  

点击'撤消&#39>,删除似乎已取消

Before

我的列表控制器目前看起来像这样,

function ListsController($scope, List) {↲                                                                                     
  List.get({}, function(lists) {
  $scope.lists = lists.objects;
  $scope.delete_list = function(index) {
    var isConfirmed = confirm('Are you sure you want to delete it?');
    if (isConfirmed) {      
      var targetlist = $scope.lists[index];
      List.delete({ listId: targetlist.id },
      function(list) {
        $scope.lists.splice(index, 1);
      }
      )
    }
  } 
 });
};

但我想按照我的说法启用撤消功能。

角度js中最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果没有看到List服务的功能,我无法给出一个确切的示例,但我认为最好的办法是跟踪另一个范围变量中已删除的项目,如果单击撤消,则只需添加它回到列表。

可能是这样的:

$scope.deleted_lists = [];
$scope.delete_list = function(index) {
  var isConfirmed = confirm('Are you sure you want to delete it?');
  if (isConfirmed) {      
    var targetlist = $scope.lists[index];
    List.delete({ listId: targetlist.id }, function(list) {
      $scope.deleted_lists.concat($scope.lists.splice(index, 1));
    });
  }
};

然后你可以使用ng-repeat(如果你想要多个undos)来显示已删除的项目,点击撤销按钮只需通过.push()将项目添加回列表。