【发布时间】:2014-04-18 03:00:22
【问题描述】:
我有 2 份表格 - 账单和运费。如果用户选中一个复选框,则送货地址应填写帐单地址并禁用。如果用户取消选中该框,则送货地址应为空白并返回启用状态。
我现在可以使用 $watch 进行此操作,但感觉很笨拙。我有 2 个 $watches 嵌套在彼此观看相同的元素。我想知道是否有更好的方法来实现我正在做的事情。
我尝试在 ng-model 中使用三元运算符,如下所示,但这也不起作用。
<input ng-model="isSameAsBilling ? billName : shipName" ng-disabled="isSameAsBilling" />
HTML:
<input ng-model="billName" />
<input type="checkbox" ng-checked="isSameAsBilling" ng-click="sameAsBillingClicked()"/>
<input ng-model="shipName" ng-disabled="isSameAsBilling" />
JavaScript:
$scope.isSameAsBilling = false;
$scope.sameAsBillingClicked = function(){
$scope.isSameAsBilling = !$scope.isSameAsBilling;
};
$scope.$watch('isSameAsBilling', function(isSame){
if ($scope.isSameAsBilling) {
var shipNameWatcher = $scope.$watch('billName', function (newShipName) {
$scope.shipName = $scope.billName;
var secondBillWatcher = $scope.$watch('isSameAsBilling', function(isChecked){
if (!isChecked){
shipNameWatcher();
secondBillWatcher();
$scope.shipName = '';
}
});
});
}
});
【问题讨论】:
标签: javascript angularjs