2017-08-31 14 views
1

新しいレコードを追加し、対応するボタンをクリックした後に新しいアイテムを追加する角度を "忘れる"方法を教えてください。 レコードを追加する機能があり、新しいレコードをテーブルに追加すると正しく表示されますが、2番目のレコードを追加すると、前の入力を削除して別のものを入力してしまうという問題があります。これにより、下に新たに追加されたレコードも変更されます。新しいレコードを追加して、anglejsで前のレコードを更新しない方法

私が配列にアイテムを追加した直後に、私は角を忘れてしまいます。これをどのように達成するのですか?私のコントローラで

私は私が持っている私のhtmlでこの

(function() { 

    var app = angular.module("mainApp"); 

    var ordersController = function ($scope,$filter, ordersService,customerService) { 
     $scope.orders = []; 


    $scope.addOrder = function (newOrder) { 


      $scope.orders.push(newOrder); 
     } 

app.controller("ordersController", ["$scope","$filter", "ordersService","customerService", ordersController]); 

}()); 

を持っているこの

<div><table> 
      <tr> 
       <td><input ng-model="item.quantity" type="text" /></td> 
       <td><button type="button" ng-click="addOrder(item)">Add Line Item</button></td> 
      </tr> 
</table></div> 
    <div> 
<table> 
       <tr ng-repeat="order in orders track by $index"> 
        <td> 
         {{ order.quantity }} 
        </td> 
       </tr> 
</table> 
    </div> 

答えて

4

問題は角度がそれを維持しながら、あなたは配列にnewOrderオブジェクトを追加していることかもしれないがバインドされたモデルですそのオブジェクトに。このような角度のコピー機能を使用してみてください(あなたが角度1を使用していると仮定します):

$scope.addOrder = function (newOrder) { 
     var copiedOrder = angular.copy(newOrder); 
     $scope.orders.push(copiedOrder); 
    } 

コピーメソッドのドキュメントがhereを見つけることができます。

+1

ありがとうございました。魅力的に働いてくれてありがとうございました:)私は同僚が歩き回ってくれましたが、あなたの答えは私がもっとよく好きな簡略なものです。他の人のために、私はモデルを更新するたびに、配列にポインタを押し込んでいました。そのためには、新しいオブジェクトを作成し、各プロパティを割り当てるか、@ J.Nに感謝する必要があります。単にangle.copy(yourObject)を呼び出すことができます。 – jtslugmaster08

関連する問題