2016-06-14 40 views
0

试图找出窗体相关的角度技术。我是angularjs的新手,并开始深入研究它。Angular js - 克隆数据实时从一个字段到另一个字段

嗯即时尝试获取当前和永久地址的形式。当选中“与当前一样”复选框时,当前地址字段的值将被写入永久地址字段的ng值中。

虽然永久地址字段先输入,然后我们检查“与当前相同”而不是覆盖当前地址ng值的字段。

当前地址字段

<input type="text" class="h-textform form-control" id="exampleInputEmail3" name="current_address_line1" ng-model="contacts.current_address_line1" placeholder="House Number"> 

复选框:

<input type="checkbox" value="disable" checked="checked" ng-model="sameascurrent">Same as Current 

Permenent地址:

<input type="text" class="h-textform form-control" ng-if="sameascurrent" id="exampleInputEmail3" ng-value="contacts.current_address_line1" name="permenent_address_line1" ng-model="contacts.permenent_address_line1" ng-disabled="sameascurrent" placeholder="House Number"> 
    <input type="text" class="h-textform form-control" ng-if="!sameascurrent" id="exampleInputEmail3" name="permenent_address_line1" ng-model="contacts.permenent_address_line1" ng-disabled="sameascurrent" placeholder="House Number"> 

任何帮助,将不胜感激。从输入

http://plnkr.co/edit/rX3iT5lX2JEIArvxL8SK?p=preview

+0

对不起,没有检查'与当前'相同的默认值,所以我使用'ng-value'来实时输入永久字段。 –

回答

0
<input type="text" class="h-textform form-control" ng-if="sameascurrent" id="exampleInputEmail3" !!ng-value="contacts.current_address_line1"!! name="permenent_address_line1" ng-model="contacts.permenent_address_line1" ng-disabled="sameascurrent" placeholder="House Number"> 

删除NG-值。 Ng值用于设置像收音机对象的值,或者像这样。

UPD:请记住。当您使用ng模型时,这意味着来自输入的值将动态设置为您的模型。所以你可以将它从模型绑定到你想要的任何地方

1

将覆盖逻辑移到控制器。对于永久地址,请使用与电流类似的输入(否ng-value仅限ng-model)加ng-disabled

<input type="text" class="h-textform form-control" id="exampleInputEmail3" name="permenent_address_line1" ng-model="contacts.permenent_address_line1" ng-disabled="sameascurrent" placeholder="House Number"> 

<input type="text" class="h-textform form-control" id="exampleInputEmail3" name="permenent_address_line2" ng-model="contacts.permenent_address_line2" ng-disabled="sameascurrent" placeholder="Street Name"> 

添加ng-change到复选框输入:

<input type="checkbox" ng-change="change()" value="disable" checked="checked" ng-model="sameascurrent">Same as Current 

和功能时,在复选框控制器被改变调用。如果sameascurrent为真,此函数将覆盖永久地址的模型。

$scope.change = function() { 
    if ($scope.sameascurrent) { 
     $scope.contacts.permenent_address_line1 = $scope.contacts.current_address_line1; 
     $scope.contacts.permenent_address_line2 = $scope.contacts.current_address_line2; 
    } 
} 

http://plnkr.co/edit/aEuG62gaUh5U4Xl5ZUTv?p=preview

0

ng-value刚才设置的申请一次,实时数据克隆,你可以写在控制器内部自己$watch方法:

function sync(){ 
if($scope.sameascurrent){ 
    var contacts = $scope.contacts; 
    contacts.permenent_address_line1 = contacts.current_address_line1; 
    contacts.permenent_address_line2 = contacts.current_address_line2; 
} 
} 
$scope.$watch('contacts',sync,true); 
$scope.$watch('sameascurrent',sync); 

http://plnkr.co/edit/EPoprBLeNxlwDlklWuiC?p=preview

更多有关$watch的详细信息,可以参考angular docs for $scope

相关问题