2017-03-07 9 views
0

削除ボタンをクリックしてdivを動的に削除しようとしています。 私は便宜のためにこのフィドルhttps://jsfiddle.net/y4punqp3/2/を作成しました。角を使って動的divを削除する

remove関数

$scope.removeUnavailability = function() { 
    --numUnavail; 
    document.getElementById("tempUnavail").remove(); 
} 

削除ボタンをクリックしたときに、対応する行が削除されるべきです。 私は何が欠けていますか?

+1

:そして、いつものようにこれらのjQuery-角度の質問では、ここで答えをチェックしてください。 DOMを手動で操作したくない、コントローラのモデルをアプリケーションの現在の状態を表すモデルにしたい、テンプレートがそのデータに自動的に適応する必要がある...ちょっとした時をあなたのフィドルは角度のある方法である。 – Fissio

+0

あなたの質問のコードは[mcve]ではありません。質問自体にMCVE **を提供する必要があります**。 JS Fiddle **にリンクされているコードは、質問**のコードと一致しません。 – Quentin

+0

@Quentin 'JS Fiddleにリンクされているコードは、質問のコードと一致しません。「フィドルは問題ではないはずのコードの質問に十分に近いです。 – Fissio

答えて

1

クリーンなソリューションのための更新フィドルチェック:角度で

を、あなたはあなたのコントローラ内のデータを持っていると思いますが、モデルを表し、そしてあなたのテンプレートは、そのモデルに基づいたものを描画します。手動でディレクティブ以外の方法でHTMLを手動で追加/削除したり、DOMを編集する必要はありません。それ以外の場合は足で自分を撃っているだけで、意味のある方法で角度を使用しているわけではありません。

JS:

var app = angular.module("satUnav-app", []); 
app.controller("satUnav-ctrl", function($scope) { 

    $scope.unavailabilities = []; 

    $scope.addUnavailability = function() { 
    $scope.unavailabilities.push({}); 
    } 

    $scope.removeUnavailability = function (idx) { 
    $scope.unavailabilities.splice(idx, 1); 
    } 
}); 

はHTML:

<div ng-repeat="unavail in unavailabilities"> 
    <select ng-model="unavail.selection"> 
     <option>PRN 01 (ID:401)</option> 
     <option>PRN 02 (ID:402)</option> 
     <option>PRN 03 (ID:403)</option> 
     <option>PRN 04 (ID:404)</option> 
    </select> 
    <label for="tempUnavail">Start</label> 
    <input type="datetime-local" ng-model="unavail.start"> 
    <label for="tempUnavail">Stop</label> 
    <input type="datetime-local" ng-model="unavail.stop"> 
    <button type="button" data-ng-click="removeUnavailability($index)">Remove</button> 
</div> 

今、私たちはそれを眺めているに基づいて、単にアレイスコープの変数を編集してdiv要素を追加/削除するのは簡単ですきれい角度コードを持っていますその愚かなDOM操作のどれも描画されません。

EDIT:あなたは角間違っを使用しているhttps://stackoverflow.com/a/15012542/3368834

+0

ありがとうFissio。それはうまく動作します。それにもかかわらず、私はNGモデルのコンセプトを理解しようと努力しています。私はhtml入力と角度変数の間にある種の "橋渡し"を提供していることは知っていますが、それがどのように機能するかはまだ分かりません。私が見る限り、 "unavail.selection、unavail.start and unavail.stop"では、ユーザーが選択したものを表す3つの変数を作成しています。これらの変数は、(例えば、検証のために)角度スクリプトで処理することができるものよりも大きい。それが正しいか? – Dad85

+0

@Fisso:クリックで表示される選択メニューの最初のオプションが空の選択可能なセルではなく、「選択する」のようなタイトルになるように、フィドルを変更するにはどうすればよいですか? – Dad85

+0

@ Dad85あなたの最初のコメントでは、ええ、これはかなりです - あなたはng-modelが異なる入力などで動作するかどうかを確認できます。2番目の質問については、デフォルトの選択オプション単に 'value =" "'を選択して、https:// jsfiddleとしたいオプションに設定してください。net/y4punqp3/6/ – Fissio

関連する問題