4

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

4

2 回答 2

4

维护两个对象

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

如果有人选择他们想要匹配的,就做

$scope.billing = $scope.shipping.

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

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

如果您也有一个要绑定的复选框,请在其上连接一个 data-ng-change

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

然后在你的控制器中有

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

或者不要绑定 data-ng-change 而只是 $watch MY_MODEL:

$scope.MY_MODEL = false;
$scope.$watch("MY_MODEL", function(){
    console.log($scope.MY_MODEL);
}, true);
于 2013-09-05T16:20:46.577 回答
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
    } 
}
于 2013-09-05T17:24:04.940 回答