角度单向绑定

时间:2016-08-02 05:02:04

标签: angularjs data-binding

我正在使用棱角1.3.15。我想绑定数据,这是第一次变量($scope.twotap_builtin_cart.sites[sikey].shipping)从$scope.shipping_address分配数据的方式。稍后,即使修改了名为$scope.twotap_builtin_cart.sites[sikey].shipping数据的变量,它也不会对其他$scope.shipping_address产生任何影响。我说的是一次约束或单向绑定

3 个答案:

答案 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,而是同时ab引用同一个对象。最好的方法是执行分配:

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中 - 这就是您想要的。