1

Ich versuche, eine Tabelle aus einem JSON von einem Webdienst zu zeigen, und dann mache ich ein Array. Die Array-Länge ist 0 und wenn ich auf eine Schaltfläche klicke, füge ich 1 Element zum Array hinzu und füge eine neue Zeile zur Tabelle hinzu. Wenn ich auf den Knopf klicke, fügt er mir nicht das Element auf dem Array hinzu und weiß nicht warum. Es ist möglich, zwei verschiedene ng-Wiederholungen auf dem gleichen Controller und der gleichen Ansicht zu haben.Mehrere ng-repeat in einer einzigen Ansicht

Es ist die Steuerung:

assets.controller('EditaTipusCtrl', function ($scope, $http, $routeParams) { 
       $http.get('http://10.0.203.73/WS/ws.php/tipusactius/getDetails/' + $routeParams.id).success(function (data) { 
        $scope.atrb = data; 
       }); 

       $scope.nousAtributs = []; 

       $scope.addNewLine = function() { 
        var newRow = { 
         "nomAtribut": "", 
         "tipus": "", 
         "mida": '', 
         "prioritat": "", 
         "obligatori": "", 
         "observacions": "", 
         "nomTipusActiu": $routeParams.id // nom del tipus d'actiu 
        }; 
        $scope.nousAtributs.push(newRow); 
       //  return $scope.nousAtributs; 
       } 

      }); 

Und die Aussicht:

<div class="col-md-10"> 
    <div ng-controller="EditaTipusCtrl" id="test"> 
     <div class="row"> 
      <button class="btn btn-default" > 
       <span class="glyphicon glyphicon-plus" aria-hidden="true" ng-click="addNewLine()"></span> 
       Afegir atribut 
      </button> 
     </div> 
     <br /> 
     <table class="table"> 
      <tr> 
       <th>#</th> 
       <th><a href="" ng-click="sortField = 'ordre'; reverse = !reverse">Prioritat</a></th> 
       <th><a href="" ng-click="sortField = 'nomAtribut'; reverse = !reverse">Atribut</a></th> 
       <th><a href="" ng-click="sortField = 'midaAtribut'; reverse = !reverse">Mida</a></th> 
       <th><a href="" ng-click="sortField = 'atributObligatori'; reverse = !reverse">Obligatori</a></th> 
       <th><a href="" ng-click="sortField = 'observacions'; reverse = !reverse">Observacions</a></th> 
      </tr> 
      <tr ng-repeat="(key, value) in atrb"> 
       <td></td> 
       <td> 
        <input type="number" ng-model="value.ordre" value="value.ordre" /> 
       </td> 
       <td> 
        <input type="value.valor" ng-model="value.nomAtribut" value="value.nomAtribut" /> 
       </td> 
       <td> 
        <input type="value.valor" ng-model="value.midaAtribut" value="value.midaAtribut" /> 
       </td> 
       <td> 
        <input type="checkbox" ng-model="value.atributObligatori" value="value.atributObligatori" ng-true-value="'Si'" ng-false-value="'No'" /> 
       </td> 
       <td> 
        <input type="value.valor" ng-model="value.observacions" value="value.observacions" /> 
       </td> 
      </tr> 
      <tr ng-repeat="a in nousAtributs"> 
       <td></td> 
       <td> 
        <input type="number" ng-model="a.ordre" value="a.ordre" /> 
       </td> 
       <td> 
        <input type="a.valor" ng-model="a.nomAtribut" value="a.nomAtribut" /> 
       </td> 
       <td> 
        <input type="a.valor" ng-model="a.midaAtribut" value="a.midaAtribut" /> 
       </td> 
       <td> 
        <input type="checkbox" ng-model="a.atributObligatori" value="a.atributObligatori" ng-true-value="'Si'" ng-false-value="'No'" /> 
       </td> 
       <td> 
        <input type="a.valor" ng-model="a.observacions" value="a.observacions" /> 
       </td> 
      </tr> 
     </table> 
     <button class="btn btn-default" > 
      <span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> 
      Guardar 
     </button> 
    </div> 
</div> 

Gelöst:

ich auf die Schaltfläche Tag anstelle der span-Tag

die ng-Klick setzen

Grüße

+2

Sind Sie Fehler in der Konsole zu bekommen? Die Eigenschaften, die Sie für 'newRow' festlegen, scheinen nicht mit den Eigenschaften übereinzustimmen, die Sie in Ihrer Tabelle ausgeben möchten. Zum Beispiel hat Ihre erste Spalte 'ng-model =" a.ordre "', aber es gibt keine "ordre" -Eigenschaft für das 'newRow'-Objekt, das Sie erstellen. – Lex

+0

Ich habe den ng-Klick auf die Schaltfläche Tag anstelle der span-Tag. Danke trotzdem – proktovief

Antwort

1

Ihr ng-Klick sollte in der Schaltfläche Tag nicht die Spanne sein

0

Ich denke, was Sie tun möchten, erfordert ng-repeat-start und ng-repeat-end. So hättest du;

<tr ng-repeat-start="(key, value) in atrb"> 
    <td></td> 
    <td> 
     <input type="number" ng-model="value.ordre" value="value.ordre" /> 
    </td> 
    <td> 
     <input type="value.valor" ng-model="value.nomAtribut" value="value.nomAtribut" /> 
    </td> 
    <td> 
     <input type="value.valor" ng-model="value.midaAtribut" value="value.midaAtribut" /> 
    </td> 
    <td> 
     <input type="checkbox" ng-model="value.atributObligatori" value="value.atributObligatori" ng-true-value="'Si'" ng-false-value="'No'" /> 
    </td> 
    <td> 
     <input type="value.valor" ng-model="value.observacions" value="value.observacions" /> 
    </td> 
</tr> 
<tr style="display:none;" ng-repeat-end></tr> 
<tr ng-repeat-start="a in nousAtributs"> 
    <td></td> 
    <td> 
     <input type="number" ng-model="a.ordre" value="a.ordre" /> 
    </td> 
    <td> 
     <input type="a.valor" ng-model="a.nomAtribut" value="a.nomAtribut" /> 
    </td> 
    <td> 
     <input type="a.valor" ng-model="a.midaAtribut" value="a.midaAtribut" /> 
    </td> 
    <td> 
     <input type="checkbox" ng-model="a.atributObligatori" value="a.atributObligatori" ng-true-value="'Si'" ng-false-value="'No'" /> 
    </td> 
    <td> 
     <input type="a.valor" ng-model="a.observacions" value="a.observacions" /> 
    </td> 
</tr> 
<tr style="display:none;" ng-repeat-end></tr> 

Siehe die Dokumentation here

+0

Die Verwendung von 'ng-repeat' im OP ist korrekt und erfordert nicht 'ng-repeat-start' und' ng-repeat-end'. – Lex

Verwandte Themen