变量之间的AngularJS绑定

时间:2012-11-19 10:42:56

标签: javascript data-binding angularjs

我有一个从我的服务中检索的用户列表。当我选择任何用户时,我可以看到并编辑信息(电子邮件,角色等)。问题是我不希望这些更改影响列表中的用户数据,我只想在保存(单击按钮)后更新数据。

现在我使用两个变量:

$scope.selected - 当前选定的用户
$scope.editable - 用于存储我正在编辑的数据的变量

我交换这样的数据:

$scope.initEditable = function () 
{
    $scope.editable = {};
    $.extend($scope.editable, $scope.selected);
}

看起来像一个可怕的解决方案。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:15)

实际上,这是接近这个问题的Angular方式,你走在正确的轨道上。在像你这样的场景中,通常会:

  • 根据选择复制项目(编辑开始) - 这是您使用editable
  • 执行的操作
  • 更改副本(或原始元素)的双向数据绑定
  • 编辑完成后,我们可以将更改从副本传播到原始

关于这种模式的好处是我们可以很容易地:

  • 提供“取消”功能,用户可以在其中还原更改
  • 能够根据此比较比较副本以及UI的原始和驱动部分(例如,如果没有更改,我们可以禁用“保存”按钮)

所以,我根本不认为这种方法很糟糕。我唯一的建议是使用角度angular.copy method代替$.extend