我正在使用棱角1.3.15。我想绑定数据,这是第一次变量($scope.twotap_builtin_cart.sites[sikey].shipping
)从$scope.shipping_address
分配数据的方式。稍后,即使修改了名为$scope.twotap_builtin_cart.sites[sikey].shipping
数据的变量,它也不会对其他$scope.shipping_address
产生任何影响。我说的是一次约束或单向绑定
答案 0 :(得分:2)
你应该使用angular.copy()
进行深层处理
$scope.shipping_address = angular.copy($scope.twotap_builtin_cart.sites[sikey].shipping)
这种方式即使$scope.twotap_builtin_cart.sites[sikey].shipping
修改它也不会绑定到$scope.shipping_address
答案 1 :(得分:2)
我认为您不是在寻找绑定,而只是将变量的值分配给另一个。使用JSON对象时($scope
就是这样一个对象),使a = b
不是将b
的内容复制到a
,而是同时a
和b
引用同一个对象。最好的方法是执行分配:
b = JSON.parse(JSON.stringify(a)) ;
在你的情况下:
$scope.twotap_builtin_cart.sites[sikey].shipping = JSON.parse(JSON.stringify($scope.shipping_address)) ;
如果您这样做,两个变量都保存相同的信息,但可以更改它们而不会影响另一个。
答案 2 :(得分:2)
在这个问题中提出了类似的要求: Edit with bootstrap modal and angulajs
同样,您可以使用AngularJS copy函数来复制数据,而不会产生任何延迟绑定。
$scope.twotap_builtin_cart.sites[sikey].shipping = angular.copy($scope.shipping_address);
这里我们将$scope.shipping_address
的值复制到另一个变量中。现在,即使您对$scope.twotap_builtin_cart.sites[sikey].shipping
进行了更改,这也不会反映在$scope.shipping_address
中 - 这就是您想要的。