2016-07-20 3 views
0

Das Problem, das ich habe ist, dass jedes Mal, wenn ich auf Senden, das Objekt an das Array geschoben wird. Wenn ich auf submit klicke, um dem Array eine weitere Zutat hinzuzufügen, drückt es ein anderes Objekt auf das Array, kopiert aber auch seine Informationen in alle vorherigen Objekte im Array.Wie schiebe ich mehrere Objekte auf ein Array, ohne das Array mit dem neuesten Objekt zu überschreiben

html

<form ng-submit="addToIngredients(newIngredient)"> 
     <input ng-model="newIngredient.quantity" placeholder="e.g. 1/3" type="text"> 
     <select ng-model="newIngredient.unit"> 
      <option value="ml">ml</option> 
      <option value="l">l</option> 
      <option value="tsp">tsp</option> 
      <option value="tbsp">tbsp</option> 
      <option value="floz">floz</option> 
      <option value="cup">cup</option> 
      <option value="pnt">pnt</option> 
      <option value="qt">qt</option> 
      <option value="gal">gal</option> 
      <option value="qty">qty</option> 
     </select> 
     <select ng-options="stockItem.name for stockItem in stockItems track by stockItem._id" 
       ng-model="newIngredient.item"> 
     </select> 
     <button type='submit'>Add to ingredients</button> 
     </form> 

Funktion auf Controller

$scope.ingredients = []; 
$scope.addToIngredients = function(newIngredient){ 
    $scope.ingredients.push(newIngredient); 
    } 

Antwort

0

Dies ist wahrscheinlich Javascript Vererbung.

Sie könnten versuchen:

$scope.ingredients.push(angular.copy(newIngredient)); 

Es ist ein Hack ...

+0

diese Arbeit nicht. Die Information im ersten Objekt des Arrays wird durch die zweite ersetzt. Also habe ich jetzt im Wesentlichen zwei Kopien des zweiten Objekts in meinem Array. Danke, obwohl – FlashBanistan

+0

Was bedeutet Funktion (newIngredient) {console.log (newIndrediant Ausgabe?} – user3791775

+0

die Ausgabe von console.log (newIngredient) ist die richtige Information, aber wenn dieses Objekt an das Array geschoben wird kopiert es über alle anderen Objekte in der array – FlashBanistan