如何将对象重置为其原始值并在AngularJS中保持绑定

时间:2017-06-01 20:14:12

标签: javascript angularjs data-binding

我有一个服务,它有一个来自API的复杂对象,例如

{
    name: "Foo",
    addr: {
        street: "123 Acacia Ave",
        zip: "10010"
    }
}

我将它存储在myService.address中,并使用

将其初始值存储在另一个变量中
myService.originalAddr = angular.copy(myService.addr);

所以我可以根据需要将表单重置为初始值。

在我的指令控制器中,我注入服务并将scope属性绑定到myService.addr

$scope.addr = myService.addr;

......据我了解,这应该设置双向绑定。

在另一个指令中,我运行一个函数:

$scope.reset = function(){
    myService.addr = angular.copy(myService.originalAddr);
}

这按预期工作,myService.addr重置为初始值。但是,我在表单中绑定的值不会重置,并且$ scope.addr会在编辑时保留。我一直在使用

<input type="text" ng-bind="addr.street"/>

并且还尝试了

<input type="text" ng-model="addr.street"/>

但是表单中的值保留了它们编辑的任何值,并且不会重置。看起来angular.copy正在断开绑定。我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题的解决方案应该是:

$scope.reset = function(){
    $scope.addr = angular.copy(myService.originalAddr);
}