动态更改ng模型的来源

时间:2013-09-05 16:19:33

标签: angularjs dynamic binding

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

2 个答案:

答案 0 :(得分:4)

维护两个对象

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

如果有人选择了想要匹配的内容,请执行

$scope.billing = $scope.shipping.

由于对象是通过引用,因为它们更新一个,另一个也将更新。您可以通过将$ scope.billing更改为您初始化它的任何内容来删除引用:

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

如果您还有一个想要绑定它的复选框,请在其上连接数据更改

<input type="checkbox" data-ng-model="MY_MODEL" data-ng-change="myFunction() "/>

然后在你的控制器中

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

或者不绑定数据-ng-change,只需$ watch MY_MODEL:

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

答案 1 :(得分: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
    } 
}
相关问题