【问题标题】:AngularJS binding between variablesAngularJS 变量之间的绑定
【发布时间】:2012-11-07 06:38:52
【问题描述】:

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

现在我使用两个变量:

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

我像这样交换数据:

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

看起来像一个糟糕的解决方案。正确的做法是什么?

【问题讨论】:

    标签: javascript data-binding angularjs


    【解决方案1】:

    实际上,这是解决此问题的 Angular 方法,您走在正确的轨道上。在像您这样的场景中,通常会:

    • 在选择时复制项目(编辑开始) - 这就是您对 editable 所做的事情
    • 使用 2 向数据绑定更改副本(或原始元素)
    • 编辑完成后,我们可以将更改从副本传播到原件

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

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

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

    【讨论】:

    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多