如何根据复选框的更改同步 2 个对象?

mr1*_*011 4 angularjs

我正处于学习 Angularjs 的初级阶段,所以请耐心等待我提出这个愚蠢的问题。我基本上想从一开始就以正确的方式去做,而不是仅仅让它发挥作用。

无论如何,我有 1 个订单结帐表,其中包含 2 组地址:运输和计费。我有一个复选框,上面写着“送货地址与账单地址相同”,如果选中它应该同步两个地址。

我的方法是将 2 个地址视为 2 个对象,如果选中该复选框,那么我将有类似 scope.shippingAddress = scope.billingAddress 的内容。

我想知道以上是否是一个好方法?

另外,在复选框更改时触发上述同步的好方法是什么?我应该使用 ng-checked 还是应该使用 $watch?

Pie*_*len 5

我会用手表:

$scope.$watch('shippingIsSameAsBilling', function(value) {
  if(value) {
    $scope.shippingAddress = $scope.billingAddress;
  } else {
    $scope.shippingAddress = angular.copy($scope.shippingAddress);
  }
});
Run Code Online (Sandbox Code Playgroud)

如果用户通过分配每个自己的对象(使用 angular.copy)。

看到这个 工作示例,Plunker

请注意,您将向后端发送两个相同的地址。你确定要那样做吗?