Estoy tratando de agregar las filas dinámicamente para una de las variables que es de tipo String array en mi db. Pero solo guarda el último valor ingresado en la fila en lugar de guardarlos todos en una matriz. A continuación se muestra mi código de vista:

<div class="row" ng-class='{red:true}'>
  <label for="remedy">Remedy</label>
</div>

<input name="remedy" id="remedy" ng-model="error.remedy" required>


<br/>
<div class="row" ng-class='{red:true}'>
  <a href="#!/errorcreate"  class="btn btn-primary btn-small" ng-click="addRemedyRow()" ng-class='{red:true}'>Add Row</a></div>
<br/>

<table style="width:100%">
  <thead>
  <tr>
  <th ng-class='{red:true}'>Remedy</th>

</tr>
</thead>
<tbody>
<tr ng-repeat="rowContent in remedyrows">
  <td>{{rowContent.remedy}}</td>

  </tr>
</tbody>
</table>
{{error.remedy}}
<button type="submit" class="btn btn-default">Create</button>
<a href="#!errorinput" class="btn btn-default">Cancel</a>

Y este es el código en javascript:

$scope.remedyrows = [];
$scope.addRemedyRow = function() {
  $scope.remedyrows.push({
    remedy: $scope.error.remedy
  });

A continuación se muestra la salida que estoy recibiendo (en una captura de pantalla):

enter image description here

Agregué dsdfg como segunda fila y mi valor final error.remedy solo muestra dsdfg en lugar de mostrar una matriz de ambos valores: [wdssdsd,dsdfg]. error es el documento principal del cual remedy es uno de los campos del tipo String matriz.

¿Alguna idea sobre cómo lograr esto?

0
CodeHunter 15 feb. 2018 a las 08:22

2 respuestas

La mejor respuesta

En lugar de error.remedy, que se usa como titular para remedyrow en el futuro, use la variable intermedia output para mostrar los resultados y enviarlos al servidor:

Javascript:

$scope.output = $scope.remedyrows.map(function(x) { return x.remedy; });
$http({data: $scope.output, method: 'POST', url: url});

HTML:

{{output | json}}
1
Slava Utesinov 15 feb. 2018 a las 06:52

Podría haberlo logrado de la siguiente manera:

 $scope.remedyrows = [];
    $scope.output;
    $scope.addRemedyRow = function() {
      $scope.remedyrows.push({
        remedy: $scope.error.remedy
      });
     $scope.output = $scope.remedyrows.toString();
    }

Y en html

{{output}}
1
Hussain 15 feb. 2018 a las 08:35