如果值为true,AngularJS将更新ng模型

AngularJS update ng-model if value = true

本文关键字:更新 ng 模型 AngularJS true 如果      更新时间:2023-09-26

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

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

我有这个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模型选项是否是正确的方法。但从逻辑上讲,这就是我想要的工作方式。但事实并非如此。

感谢

您可以使用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

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

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

请参阅:参考链接