2017-01-24 7 views
0

私はangularJSを使用しています。私のページには1つのテーブルがあります。入力フィールドを持つ行を追加するボタンを1つ作成しました。私のソリューションは、行とフォームの入力フィールドの値を追加するために良い仕事が、私は特定の行を削除する必要がある場所ではうまくいきません。私はフォーム用に1つの関数を使用し、行を追加および削除するために1つの関数を使用します。AngularJSテーブルの行を追加

それはこのようなものだ:

<div ng-init="tmplCtr.newPeople()"> 
<div class="col-lg-12"> 
    <input name="postsubmit" class="btn btn-default btn-sm" type="submit" value="Save table" ng-click="tmplCtr.newTable(tmplCtr.table)" /> 
    <button class="btn btn-default btn-sm" ng-click="tmplCtr.editRow()">Add row</button> 
</div> 

<form name="peopleForm" novalidate> 

    <div class="table-responsive"> 
     <table class="table"> 
      <thead> 
       <tr> 
        <th class="place-name">Name</th> 
        <th class="place-value">Lastname</th> 
        <th class="place-options">Options</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="people in tmplCtr.peoples"> 
        <td class="place-name"><input type="text" name="" class="form-control" autocomplete="off" ng-model="tmplCtr.peoples.values[$index].name"></td> 
        <td class="place-last"><input type="text" name="" class="form-control" autocomplete="off" ng-model="tmplCtr.peoples.values[$index].lastname"></td> 
        <td class="place-options"><button class="btn btn-danger btn-md btn-delete" ng-click="tmplCtr.editRow($index)">Delete</button></td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 

</form> 

私はボタンが行を追加押すと、私は行を取得するが、私は、削除行を押したときに、私は配列ではなく、インデックスによって画面が、最後の行から行を削除します。その行の値もフォームスコープから削除されません。機能は:

function editRow(item) { 
     if(item == undefined) { 
      vm.peoples.push({}); 
     } else { 
      vm.peoples.splice(item,1); 
     } 
    } 

誰でも手伝ってもらえますか?

+0

あなたはNG-モデル= "tmplCtr.table.values [$インデックス] .nameの" 代わりに使用NG-モデルを使用すべきではありません= "place.name"と他のフィールドと同様に 削除ボタンをクリックすると、場所オブジェクトを送信できます。 NGクリック=「tmplCtr.editRow(場所)」 インサイドeditRowあなたは配列内の場所を探し、それを –

+0

を削除することができます。しかし、それは大丈夫です追加して、私はtmplCtr.peoples.values配列からオブジェクトを削除する必要があります。私は関数の編集行で良いインデックスを送信しますが、vm.peoples.splice(item、1);何とか良い仕事をしないでください – Sasa

+0

プランナーを作ることができましたか? – Korte

答えて

0

私はその優れた二つの機能を作るために考えて、最初の1項目を追加するためのもので、2つ目は、以下のように削除するためです:

function addEmptyItem(){ 
    vm.peoples.push({}); 
} 

function deleteItem(index){ 
    vm.peoples.splice(index, 1); 
} 

次に、あなたのビューであなたがtmplCtr.editRow($index)変更することができます - >tmplCtr.deleteItem($index)

さらに、リピート・ディレクティブにperson.nameなどの構文を使用することを強くお勧めします。

EDIT:

これは仕方によってテストされていません...

+0

vm.peoples.splice(index);私がvm.peoples.splice(index、1)を書くと、すべてを削除します。配列の最後の行を削除してください。 – Sasa

+0

@Sasa更新された答えを試してください。動作しない場合は、 '$ scope'オブジェクトを更新する必要があります。何か問題があれば私に知らせてください。 –

+0

私は、質問を更新し、プランナーをもっと簡単にするようにします。 – Sasa

関連する問題