2013-09-05 40 views
4

我有运费和结算字段。如果客户选中了“使用运费进行结算”方框,我希望结算字段与运费字段相匹配。我可以复制这些值,但我宁愿重新绑定计费字段以匹配发货字段,所以如果选中此复选框并对发货进行更改,结算也会更新。那么,我将如何重新绑定ng模型的来源,或者我可以使用什么成语来绑定账单地址字段来实现这一点?动态更改ng-model的来源

回答

4

维护两个对象

$scope.shipping = { .... }; 
$scope.billing = { .... }; 

如果有人选择他们想匹配,只是做

$scope.billing = $scope.shipping. 

因为对象是通过引用,当他们更新一个另外也将更新。你可以通过改变$ scope.billing回不管你用它初始化删除参考:

$scope.billing = { .... }; 

如果你要在它

数据-NG-变化结合本太,线了一个复选框
<input type="checkbox" data-ng-model="MY_MODEL" data-ng-change="myFunction() "/> 

然后在您的控制器具有

$scope.MY_MODEL = false; 
$scope.myFunction(){ 
    console.log($scope.MY_MODEL); 
} 

还是不绑定数据-NG-变化,只是$看MY_MODEL:

$scope.MY_MODEL = false; 
$scope.$watch("MY_MODEL", function(){ 
    console.log($scope.MY_MODEL); 
}, true); 
+0

好,很好用!根据复选框是否被选中,绑定/重置的最佳方式是什么? – chris

+0

我编辑了我的答案来解决这个问题。 –

+0

好吧,这几乎是工作,但由于某种原因复选框上的数据绑定不更新。如果我将MY_MODEL设置为true,它会首先被检查,但是当我取消选中它时,myFunction()将它记录为true。反之亦然,如果它最初是错误的。更改事件是否拦截数据绑定? – chris

3

您可以使用ng-checked而不是使用示波器手表来使其重量轻。不要重新发明轮子。

<input type="checkbox" ng-model="flip" ng-checked="checked();"> 

$scope.checked = function(){ 
    if($scope.flip){ 
     $scope.data = ... //update the data source    
    }else{ 
     $scope.data = ... //update the data source 
    } 
} 
+0

这可能也工作,除了出于某种原因,我的复选框没有正确绑定到模型http://stackoverflow.com/questions/18642371/checkbox-not-binding-to-scope-in​​-angularjs – chris