1
我有2個表單 - 一個帳單和一個發貨。如果用戶選中複選框,則應使用帳單地址填充送貨地址並禁用。如果用戶取消選中該框,則送貨地址應爲空白並返回到啓用狀態。angularjs動態更改模型綁定
我現在用$ watch正在工作,但感覺很不舒服。我有兩隻手表嵌套在彼此看着相同的元素。我想知道是否有更好的方法來實現我正在做的事情。
我試過在下面的ng模型中使用三元運算符,但那也不起作用。
<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 = '';
}
});
});
}
});
我試過,但問題是,你只捕捉時間價值。如果選中複選框,則內容將複製,但如果您在billName中鍵入某些內容,則不會反映到shipName中。 – VtoCorleone
啊,燈泡。好吧,我得到了問題的真相。讓我想一想 – jshanley
好的,你可以用2個手錶來完成,但是它們不需要嵌套。 billName上的一個手錶用於更新shipName(如果該框已選中),另一個用於checkbox值,如前所述。 [Plunk](http://plnkr.co/edit/5QVl1iiKGFQe6AgVaAiF?p=preview) – jshanley