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

时间:2013-12-26 10:01:20

标签: angularjs

我正处于学习Angularjs的最初阶段,所以请耐心问我这个愚蠢的问题。我基本上希望从一开始就采用正确的方式,而不仅仅是让它发挥作用。

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

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

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

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

1 个答案:

答案 0 :(得分:4)

我会用手表:

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

如果用户通过分配每个自己的对象(使用angular.copy)再次取消选中该复选框,则需要“取消同步”这两个地址。

有关工作示例,请参阅此Plunker

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