我正处于学习Angularjs的最初阶段,所以请耐心问我这个愚蠢的问题。我基本上希望从一开始就采用正确的方式,而不仅仅是让它发挥作用。
无论如何,我有1张订单结帐表格,其中包含2套地址:运费和结算。我有一个复选框,上面写着“送货地址与账单地址相同”,如果选中则应同步2个地址。
我的方法是将2个地址视为2个对象,如果选中该复选框,那么我将使用scope.shippingAddress = scope.billingAddress。
我想知道以上是否是一个很好的方法呢?
此外,在复选框更改时触发上述同步的好方法是什么?我应该使用ng-checked还是应该使用$ watch?
答案 0 :(得分:4)
我会用手表:
$scope.$watch('shippingIsSameAsBilling', function(value) {
if(value) {
$scope.shippingAddress = $scope.billingAddress;
} else {
$scope.shippingAddress = angular.copy($scope.shippingAddress);
}
});
如果用户通过分配每个自己的对象(使用angular.copy
)再次取消选中该复选框,则需要“取消同步”这两个地址。
有关工作示例,请参阅此Plunker。
请注意,您将向后端发送两个相同的地址。你确定要这样做吗?