(暂时)当对象发生变化时,防止角度更新视图?

时间:2015-03-14 04:12:24

标签: angularjs

我有一个对象,我将其发送到Web服务器以存储在数据库中。在我发送它和操作完成之间我需要稍微修改它以便服务器可以处理它。

实际上我有以下代码:

$scope.o = {...};

$scope.send = function()
{
  $scope.sanitize($scope.o);
  SomeService.Save($scope.o).then( function() {
    $scope.unsanitize($scope.o);
  });
}

Sanitize只是让对象准备好发送服务器,并且unsanitize将它放回一个视图可以更容易处理的表单中。

我遇到的问题是在清理和未清理的呼叫之间,有几毫秒的延迟(或几秒钟,具体取决于我的网络当时的速度)。在此期间,视图会更新并显示已消毒的更改。但是,我不希望在服务器正在执行此操作时,这些更改会显示给用户。

有没有办法暂时阻止角度更新特定对象的更改?

我已经创建了一个说明问题的jsfiddle:http://jsfiddle.net/29ze4exp/5/

1 个答案:

答案 0 :(得分:2)

当然!只是不要修改绑定到视图的对象。相反,请使用副本。

var copy = angular.copy($scope.o);
$scope.sanitize(copy);
SomeService.Save(copy).then(function() {