2016-09-07 22 views
0

フォームのng-repeatに問題があります。ng-repeatから特定の要素を削除するにはどうすればよいですか?

ボタンをクリックすると、入力フィールドのグループが削除ボタンと共に表示されます。私はこれに対してng-repeatを使用しています。削除ボタンをクリックすると、特定の入力グループを削除できます。私が今すぐ書いた方法では、削除ボタンをクリックすることで、どこをクリックしていても、リストの一番下から入力が削除されます。ここでは、より良い、それを説明するためのGIFです:

enter image description here

(私が欠けている何かがありますしない限り、)私はそれだけでNGリピート内のその特定の$インデックスでは、単純なスプライスだろうと思ったが、どうやらありません。ここで

はNGリピートのためのHTMLです:任意の助けを事前に

$scope.addParameterFields = function() { 
    console.log('CLICKED'); 
    if($scope.formData.gameIdParams === null || $scope.formData.gameIdParams === undefined) { 
    $scope.formData.gameIdParams = []; 
    } 
    $scope.formData.gameIdParams.push({ 
    id: "", 
    label: "", 
    validationRegex: "" 
    }); 
    console.log($scope.formData); 
}; 

ありがとう:

<div class="form-group"> 
    <label class="col-sm-2 control-label">More Parameters</label> 
    <button type="button" ng-click="addParameterFields()">Add Parameter</button> 
     <div class="col-sm-10 col-sm-offset-2"> 
     <div ng-repeat="params in formData.gameIdParams track by $index" class="controls parameters"> 
      <input type="text" ng-model="formData.gameIdParams.id[$index]" 
      name="gameIdParamsId" 
      class="col-sm-3" 
      autocomplete="off" 
      placeholder="Type of Input" 
      validation-field-required="true"/> 
      <input type="text" ng-model="formData.gameIdParams.label[$index]" 
      name="gameIdLabel" 
      class="col-sm-3" 
      autocomplete="off" 
      placeholder="Placeholder Text to add in Input Field" 
      validation-field-required="true"/> 
      <input type="text" ng-model="formData.gameIdParams.validationRegex[$index]" 
      name="gameIdvalidationRegex" 
      class="col-sm-3" 
      autocomplete="off" 
      placeholder="Regex used for Validation (optional)" 
      validation-field-required="false"/> 
      <button ng-click="formData.gameIdParams.splice($index,1)">Remove</button> 
     </div> 
    </div> 
</div> 

そして、ここでは、私はフォームを追加するために使用するロジックです!

ng-click="removeForm($index)" 

$インデックスは、あなたのngのリピートループの反復数に対応する:よう

答えて

1

あなたが関数を作成する必要があります。

その後、ちょうどあなたのコントローラで:

$scope.removeForm = function(index){ 
    delete yourObj[index]; 
    // or 
    yourObj.splice(index, 1); 
} 

EDIT

置き換えます

formData.gameIdParams.your_variable[$index] 

で:

formData.gameIdParams[$index].your_variable 

または:

params.your_variable 
+0

ええと、私もそれを試しました、そして、私はGIFを投稿した場合でも、あなたが見ることができる同じ動作を得ています。私はそれをconsole.logに設定して、単にインデックスを再確認するだけで、正しいインデックスが表示されています。しかし、まだリストの一番下から削除されています。 – amacdonald

+0

よろしいですか?すべてのモデルをparams.your_variablesに置き換えてみてください。私に知らせてください – KCarnaille

+0

AH!私はそれを解決した。私はちょうど大きなダミーだと私のngモデルを間違って書いています。私が上記のhtmlでは、_ng-model = "formData.gameIdParams.label [$ index] _ _ng-model =" formData.gameIdParams [$ index] .label._が必要です。 – amacdonald

関連する問題