(暂时)防止角度在对象更改时更新视图



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

实际上我有以下代码:

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

Sanitize 只是让对象准备好发送服务器,而 uncleanitize 将其放回视图可以更轻松地处理的形式。

我遇到的问题是,在清理和取消消毒的调用之间,有几毫秒的延迟(或几秒钟,取决于当时我的网络有多慢)。在此期间,视图将更新并显示清理所做的更改。但是,我不希望在服务器执行其操作时向用户显示这些更改。

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

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

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

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

最新更新