变量之间的AngularJS绑定

Chr*_*ruS 13 javascript data-binding angularjs

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

现在我使用两个变量:

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

我交换这样的数据:

$scope.initEditable = function () 
{
    $scope.editable = {};
    $.extend($scope.editable, $scope.selected);
}
Run Code Online (Sandbox Code Playgroud)

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

pko*_*rce 15

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

  • 选择后复制一个项目(编辑开始) - 这就是你要做的事情 editable
  • 更改副本(或原始元素)的双向数据绑定
  • 编辑完成后,我们可以将更改从副本传播到原始文件

关于这种模式的好处是我们可以轻松地:

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

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

  • 要自动化我创建的那些东西**lazy-model**指令https://github.com/vitalets/lazy-model (2认同)