如果value = true,AngularJS会更新ng-model

时间:2015-02-09 09:47:00

标签: javascript angularjs angular-ngmodel

您好我正在构建一个概述数据库数据的应用程序。我有一个表单,用ng-model将信息加载到输入字段中,用户可以选择更改这些值。

但是,当用户更改输入字段中的值时,我不希望概述上的值实时更新。只有在提交表单后,我才能看到更改。

我在概述方面有这个HTML

<dt>COMPANY</dt>
<dd>{{client.company}}</dd>
<dt>NAME</dt>
<dd>{{client.firstname}} {{client.lastname}}</dd>

,表格是

<p>Company</p><input type="text" name="ciCompany" class="pinfo" ng-model-options="{ updateOn: 'value = true' }" required ng-model="client[0].company">
<p>First Name</p><input type="text" name="ciFirstName" class="pinfo" ng-model-options="{ updateOn: 'value = true' }" required ng-model="client[0].firstname">
<p>Last Name</p><input type="text" name="ciLastName" class="pinfo" ng-model-options="{ updateOn: 'value = true' }" required ng-model="client[0].lastname">

我不知道使用ng-model-options是否是正确的方法。但从逻辑上讲,这就是我希望它发挥作用的方式。但它没有。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用angular.copy执行此操作:

$scope.clients = {}; // your array
$scope.clientsCopy = angular.copy($scope.clients);

<dt>COMPANY</dt>
<dd>{{clientsCopy.company}}</dd>
<dt>NAME</dt>
<dd>{{clientsCopy.firstname}} {{clientsCopy.lastname}}</dd>

<form ng-submit="userSubmit()">
  <p>Company</p><input type="text" required ng-model="clients[0].company">
</form>

然后您可以使用onSubmit更新新值:

$scope.userSubmit = function() {
  $scope.clientsCopy = $scope.clients; 
}

如果使用下划线或lodash,也可以使用_.extends或_.merge。

答案 1 :(得分:0)

在表单提交上您必须使用angular.copy方法来复制数据,如下所示:

$scope.client = angular.copy(clients[0]);

请参阅:reference link