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

Javascript 如何将对象重置为其原始值并在AngularJS中保持绑定,javascript,angularjs,data-binding,Javascript,Angularjs,Data Binding,我有一个服务,它有一个来自API的复杂对象,例如 { name: "Foo", addr: { street: "123 Acacia Ave", zip: "10010" } } 我将其存储在myService.address中,并使用 myService.originalAddr = angular.copy(myService.addr); 因此,如果需要,我可以将表单重置为初始值 在指令的控制器中,我注入服务并将一个scope属

我有一个服务,它有一个来自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正在断开绑定。请问我做错了什么?

解决您问题的方法应该是:

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

代码和描述,比文字要好得多。。请改进你的问题