我有一个服务,它有一个来自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正在断开绑定。我做错了什么?
答案 0 :(得分:0)
问题的解决方案应该是:
$scope.reset = function(){
$scope.addr = angular.copy(myService.originalAddr);
}