我不确定,但这里有一些你可以尝试的东西:
ng-change="prmnt_a2 = (same)?prmnt_a1:''"
这是一个棘手但完整的 HTML 方式,应该可以工作:
<div ng-if="same==false">
<input type="text" id="prmnt_a2" ng-model="prmnt_a2" class="customInput" placeholder="Address Line 2"/>
</div>
<div ng-if="same==true">
<input type="text" id="prmnt_a2" ng-init="prmnt_a2=prmnt_a1" disabled ng-model="prmnt_a2" class="customInput" placeholder="Address Line 2"/>
</div>
注意 : ng-init 通常不是这样使用的,请务必使用 ng-if 而不是 ng-show/hide。
否则,如果这不起作用:控制器中的自定义指令或函数/$watch。 ng-attr 在这里不起作用。
编辑:对于自定义指令,这看起来像代码:
.directive('myDirective', function(){
return{
restrict : 'A',
scope:{
same:'=myBoolean'
value:'=myValue'
},
require:'ngModel',
link:function(scope, element, attr, ngModelCtrl){
scope.$watch('same', function(newValue){
if(newValue){
ngModel.setViewValue(scope.value);
}
});
}
}
}
<input type="text" id="prmnt_a2" ng-init="prmnt_a2=prmnt_a1" ng-disabled="same" ng-model="prmnt_a2" my-directive my-boolean="same" my-value="prmnt_a1" class="customInput" placeholder="Address Line 2"/>
这个指令是相当基本的。如果您需要更复杂的东西,请查看网上的文档。